diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index 8182f23ae04e4b77e52363a1477a6df94fba946b..74a225c9095502cd1601067b5f994747c07d9c1d 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -1389,6 +1389,11 @@ void set_axis_is_at_home(const AxisEnum axis) {
     babystep.reset_total(axis);
   #endif
 
+  #if HAS_POSITION_SHIFT
+    position_shift[axis] = 0;
+    update_workspace_offset(axis);
+  #endif
+
   if (DEBUGGING(LEVELING)) {
     #if HAS_HOME_OFFSET
       DEBUG_ECHOLNPAIR("> home_offset[", axis_codes[axis], "] = ", home_offset[axis]);