Timer using millis()

That doesn't appear to be it .....
It works just fine with int or unsigned int:-

Iterated value - original value = difference (Or not)

unsigned int
65531 - 65530 = 1
65532 - 65530 = 2
65533 - 65530 = 3
65534 - 65530 = 4
65535 - 65530 = 5
0 - 65530 = 6
1 - 65530 = 7
2 - 65530 = 8
3 - 65530 = 9
4 - 65530 = 10
5 - 65530 = 11

int
32763 - 32762 = 1
32764 - 32762 = 2
32765 - 32762 = 3
32766 - 32762 = 4
32767 - 32762 = 5
-32768 - 32762 = 6
-32767 - 32762 = 7
-32766 - 32762 = 8
-32765 - 32762 = 9
-32764 - 32762 = 10
-32763 - 32762 = 11

Doing this with a byte returns negative numbers
byte
251 - 250 = 1
252 - 250 = 2
253 - 250 = 3
254 - 250 = 4
255 - 250 = 5
0 - 250 = -250
1 - 250 = -249
2 - 250 = -248
3 - 250 = -247
4 - 250 = -246
5 - 250 = -245