improve `validate()` to account for -0