Here's a possible approach.
Determine if you need to move thru zero. Do this if so.
In the example you mention, you want to move 10 degrees. Call it newDist. You can figure out how to calculate this, I think.
Save the new target position, let's call it newTarg.
Use Stepper.setCurrentPosition(0) to make the current position equal 0.
Use your RunStepper routine to move -newDist with scaling.
When the function returns, use Stepper.setCurrentPosition(newTarg*stepmotor_scale).
The motor will have moved the correct distance in the desired direction and the currentPosition will be correct.
Note that the delay(1) you have in RunStepper does nothing since no step will be taken unless it's time to take it.
HTH
-jim