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().