> int difference(uint a, uint b) { > if (a >= b) { > return cast(int) a-b; > } > else { > return -(cast(int) b-a); > } > } Wouldn't this be just pushing a design error one step further? uint has no mathematical basis whatsoever, it is there because we "can" have it. I have another solution, remove "uint-uint" from the language and provide explicit functions.