Fixes a range-check error in Units_Lexicon

(this may be due to our warning fixes)
The int i var was wrapping (size_t i = 0; i--). In debug mode it works, in release mode it gives a range-check error.
I spotted this because there is the /GS flag active that does range checking in potentially dangerous code (like this is), so the test failed.

I don't really know the cause of this, but it may crash because because doing unsigned 0-1 is undefined behavior, and probably the optimizer does something to reorder things.
BTW, I don't know why these whiles don't result in an infinite execution if i goes to 0.
i>=0 returns false if i == UINT_MAX

Anyway , all test pass now :)