Strangely, zero is not always false.
 In particular, the Unix and Posix convention is to define EXIT_SUCCESS as 0 (and EXIT_FAILURE as 1). Actually it is even a standard C convention!
So for Posix shells and exit(2) syscalls, 0 means "successful" which intuitively is more true than false.
 In particular, the shell's if wants a process return EXIT_SUCCESS (that is 0) to follow its "then" branch!
 In Scheme (but not in Common Lisp or in MELT) 0 and nil (i.e. () in Scheme) are true, since the only false value is #f
I agree, I am nitpicking!