Thanks everybody for clearing that up.
To the inveterate idiots of the community, it would not have occurred that ABS(-128) would ever be anything except 128, but now that you've explained that ABS() retains the variable type, we see that for a byte 128 -> -128.
You really shouldn't let technology loose on the unthinking!