The bsr instruction has a signed 21-bit displacement for +- 1M This sounds like a compiler bug, since it should be smart enough to know when to use bsr or jsr. jsr takes at least two extra ticks. If you are using optimization, you might try turning it off.