Unfortunately, this is due to the limits imposed by shorts and bytes. My advice? Use an int. There's no benefit to using it over a short or byte since for most operations they'll be converted to an int and then converted back to a byte when the operations are finished.
In this case it's like:
For i@ = 0 To 255
-Convert to int
-Increment
-Convert to byte
-Compare
Next
In this case it's like:
For i@ = 0 To 255
-Convert to int
-Increment
-Convert to byte
-Compare
Next