You mean, generally, apart from this one special case? BTW I haven't used it but from reading some threads it looks like it's one of the few non-blocking stepper libraries. That is certainly an advantage.
You are completely misunderstanding the homing procedure. The "HOME" position is the first step AWAY from the home position. Your program will never WANT to return to the home switch or what ever sensor you have, but just the step next to it. Many "homing" sensors, such as microswitches, will remain switched for more than one step of the motor.
You need to first find the home position, then back away one step and see if the home position sensor is still set. When it is no longer set, that position becomes the home or ZERO position.
Inexperienced with steppers here, but after seeing those comments, wouldn't you want to move until the switch activates and then back until it releases? Then your home position should never activate the switch?
Oh wait, that's what you said in the end. But - one step at a time instead of at full speed.