Except that under the common UNIX convention, a returned zero is TRUE, and any other result is false. This comes from C coders setting bit flags to indicate the error (so anything > 0 indicates a error flag has been set).
Larry Wall was a bit of a rebel when he selected zero as false. It is a constant gripe of C programmers converting to perl: "Your error return values are the other way around, and that confuses my tiny, C programming brain".
Note: I've been programming too long - I almost added a \n so that sentence looked like: "...C programming brain\n". Somebody help me!
I didn't believe in evil until I dated it.