Use MAX* constants instead of -1 for invalid values, because enum signedness is implementation-defined