Question: All lines in my AppStats look like this: `real=19ms cpu=0ms api=0ms overhead=0ms`, it has the correct real time, but the other values are always 0. Anyone have this problem before or know how to fix this?

Answer: 
Bash is a programming (scripting) language, but it's also a shell and a user-interface. If `0` was error, then the program could only present one kind of error.

However in Bash, any nonzero value is an error, and we may use any number from 1-255 to represent an error. This means we can have many different kinds of errors. `1` is a general error, `126` means that a file cannot be executed, `127` means 'command not found', etc. Here's a list of Bash [Exit Codes With Special Meanings](http://tldp.org/LDP/abs/html/exitcodes.html#EXITCODESREF) showing some of the most common exit codes.

There are also many kinds of success (exit status is `0`). However, a success will allow you to proceed to the next step—you can like print results to a screen, or execute a command, etc.
it's a convention dated back to the early days of Unix.

By convention, all system calls return 0 if succeed, non-zero otherwise, because then different numbers can be used to indicate different reason of failure.

Shells follow this convention, 0 means last command succeeded, non-zero otherwise. Similarly, the non-zero return value comes in handy for output error messages: e.g. 1: "brain dead", 2: "heartless", and so on.