> + if ( (any < 0) || (neg && (val > acc || (val -= c) > acc))
Isn't that one of those short-circuits that causes bad side-effects under different circumstances? I have a feeling that it is not well defined if the -= operation is always performed or not, but I could be wrong. Assuming I can understand what's going on here, I'll take a shot at trying to make the logic more clear (while keeping as much of the constant-folding/short-circuiting as possible.) -aaron
