I think I understand what you are saying. If I have it right then:
  1. If a function is designed to return data it should return FALSE, 0 or null on an error where that will not prejudice the purpose of the function.
  2. If a function has no explicit return value then it should also return 0 on error and non-zero on success so that it is consistent with rule 1.

I see the argument but it would be pretty counter-intuitive as it is the reverse of every other scripting or programming language I've ever used. I guess that's why it took me a while to see what you were getting at.