You’re asking whether the logical operators && and || short-circuit the way they do in most other languages?
Yes, they do. The I6 manual mentions this in a note in chapter 1:
&& and || work left to right and stop evaluating conditions as soon as the final outcome is known. So for instance if (A && B) ... will work out A first. If this is false , there’s no need to work out B .
when not recursively number-crunching (I often code the very first computer problem, that is, ballistic integration…), I apply a pinch of epislon to the divisor, but because the Z-machine, having only signed 16 bit integer, has a too big epislon (1), so I guess isn’t the answer for this issue.