For a really simple fix, make "jump" and "rotate" floats and increment by fractions instead of integers. So, on clockwise, add 0.2. On counter-clockwise, add -0.2. When setting your frequency, just truncate the value to an integer on assignment.
Like so:
// Definitions
float rotate = 10000.0;
float jump = 0.2;
// In the ISR:
rotate = rotate + (or -) jump;
// In Serial Send
frequency = (long)rotate;
It might not be the purest solution, but it has advantages: Minimal code changes, it's configurable, and the in-between turns (between 0.0 and 1.0) are tracked with equal resolution. I.E., since your counter tracks and remembers the fractional changes, you don't end up in a situation where three CW turns are undone with a single CCW turn.