This new behaviour isn't technically *quite* correct, as negative integers are rounded to positive ints. Most operating systems will further round this to an unsigned byte, but we should return the correct code to the OS. Integers in range INT_MIN to INT_MAX should be preserved, not made positive. Therefore, use the 'rem' operator, not 'mod' (truncating division, not floored).
This new behaviour isn't technically *quite* correct, as negative integers are rounded to positive ints. Most operating systems will further round this to an unsigned byte, but we should return the correct code to the OS. Integers in range INT_MIN to INT_MAX should be preserved, not made positive. Therefore, use the 'rem' operator, not 'mod' (truncating division, not floored).