Avoid applying unary minus to unsigned integers.
This is confusing because first you have to remember what unsigned negation does, then you have to worry about the usual arithmetic conversions during the comparison. It's simpler to express the most negative values as "blah - 1" expressions, and then the only UAC involved is widening int to long long and that's easy.
Fixes MSVC warning/error C4146 "unary minus operator applied to unsigned type, result still unsigned".