Hello, people. I believe that, in C/C++ and perhaps all other languages, 0 is false and _any_ non-zero is true. ba.if(.5, 1, 0); returns 0. I suggest rewriting ba.if as: if(cond,then,else) = ceil(cond),else,then:select2; . Also, I find the comments in the code deceiving as it can be used to avoid NANs at run-time, as in the case of: division(x1, x2) = ba.if(x2 == 0, 0, x1/x2); . Best, Dario