Timer using millis()

Anything smaller than an int (or unsigned) is "sign extended" to an int (or unsigned) before any operations are applied.

Now it starts to make sense ... The 'it' I was talking about was an addition or subtraction, the result of which would-be outside the bounds of the type.
Specifically remembering a previous value and subtracting it from the current value to get the change, but doing this with a roll-over in between.

Now if the maths involved in doing this to a byte is actually performed on 16 bits ...
Well suffice to say I probably don't understand the finer points but the rational is now far clearer.