What if `sstep` is 0x10000? Shifting it by 16 bits will yield 0, so the check will pass, but there's still an overflow. IMHO, this should just test for `sstep > 0x8000`.