diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 5c8d70ff1c633cb48fbc53d97395be441b5ce82e..06e5974556844935070d8289e636f2bf7705ab97 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -3087,8 +3087,8 @@ static void homeaxis(const AxisEnum axis) {
}
else {
- // If the height hasn't been altered, undo the Z hop
- if (retract_zlift > 0.01 && hop_height == current_position[Z_AXIS]) {
+ // If the height hasn't been lowered, undo the Z hop
+ if (retract_zlift > 0.01 && hop_height <= current_position[Z_AXIS]) {
// Pretend current position is higher. Z will lower on the next move
current_position[Z_AXIS] += retract_zlift;
SYNC_PLAN_POSITION_KINEMATIC();