ScatMan is right. Try this:
//.timer 1 0 if ($!remove(ab,b) == a) echo -a blah | timers
notice how it doesn't echo anything.

Now, try this:
//.timer 1 0 if ($remove(ab,b) == a) echo -a blah | timers
works

Now, try this:
//.timer 1 0 if ( $!remove(ab,b) == a) echo -a blah | timers
works too.

Watch the /timers output too.

What ScatMan is trying to tell you is that inside the calling script, if ($something) is not considered an if statement but a parameter to /timer. Consequently, the () pair loses its special meaning as a condition wrapper and this means that the ( won't let $something evaluate because it's touching it.

In short, you should remove the exclamation mark from $ibl().


/.timerQ 1 0 echo /.timerQ 1 0 $timer(Q).com