I am not sure if it's not late to change this, but the common convention in the POSIX APIs are that 0 is return on success and non-zero value is returned on failure. This also has the advantage of possibly returning more different error conditions.
But as an early implementor, I found this reverse login in return values for unsigned int very confusing.