That's a good thing to have, but I thought, we'd have to home XY at once for a CoreXY?
Another thing is the 'backoff' move. Shouldn't you increase the motorcurrent first, to make sure this move doesn't cause an error?
Why do you abort the macro? Instead increase motorcurrent on every iteration, until it is high enough.