-NUMBER [(-$1a) > 0] : NEG_NUMBER (-$1a) -NEG_NUMBER [(-$1a) >= 0] : NUMBER (-$1a) +NUMBER [ !INT32_NEG_OVERFLOW($1a) && (-$1a) > 0] : NEG_NUMBER (-$1a) +NEG_NUMBER [ !INT32_NEG_OVERFLOW($1a) && (-$1a) >= 0] : NUMBER (-$1a)
Hmm, the above changes hints that the problem is caused by a more aggressive C-compiler, that transcribes
(-X) > 0 and (-X) >= 0
with
X <= 0 and X < 0
which are usually equvivalent, except for X == MIN_INT.