I have tried to fix this before, but it's like applying "const", you have to change every int that interacts with an unsigned (or cast every unsigned as an int when necessary), and before you know it you have too many unsigned's and new bugs.

Plus I don't see the problem in comparing different signs in general. Stuff like (0 < -5) or (5 > -2) will always make sense. Stuff like (x < 0) if x is unsigned won't, but those are special cases, and I think there's a different flag to catch redundant compares.