My line of thinking was the was the one that Ludwig proposed. Zero as code for an error is impractical, since you most likely call these type of functions like this

```C
if (somefunction() < 0) {
    handle_error()
}
```