From 9cee81d47eea0c8700e265f10f103ca99499511f Mon Sep 17 00:00:00 2001
From: Roxy-3D <Roxy-3D@users.noreply.github.com>
Date: Sat, 6 Apr 2019 18:04:34 -0500
Subject: [PATCH] Option to show babysteps total since G28 (#13580)

---
 Marlin/Configuration_adv.h                    |   2 +
 Marlin/src/core/utility.cpp                   |  13 ++
 Marlin/src/core/utility.h                     |   3 +
 Marlin/src/feature/I2CPositionEncoder.cpp     |   6 +-
 Marlin/src/feature/babystep.cpp               | 135 ++++++++++++++++++
 Marlin/src/feature/babystep.h                 |  63 ++++++++
 Marlin/src/gcode/calibrate/G28.cpp            |   2 +-
 Marlin/src/gcode/motion/M290.cpp              |   5 +-
 Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp   |   2 +-
 Marlin/src/lcd/dogm/ultralcd_DOGM.cpp         |   2 +-
 Marlin/src/lcd/extensible_ui/ui_api.cpp       |  10 +-
 Marlin/src/lcd/language/language_en.h         |   3 +
 Marlin/src/lcd/menu/menu.cpp                  |   6 +-
 Marlin/src/lcd/menu/menu_tune.cpp             |  48 +++++--
 Marlin/src/module/motion.cpp                  |  16 ++-
 Marlin/src/module/temperature.cpp             |  86 +----------
 Marlin/src/module/temperature.h               |   8 --
 buildroot/share/tests/megaatmega2560-tests    |   4 +-
 config/default/Configuration_adv.h            |   2 +
 .../3DFabXYZ/Migbot/Configuration_adv.h       |   2 +
 .../AlephObjects/TAZ4/Configuration_adv.h     |   2 +
 .../AliExpress/UM2pExt/Configuration_adv.h    |   2 +
 config/examples/Anet/A2/Configuration_adv.h   |   2 +
 .../examples/Anet/A2plus/Configuration_adv.h  |   2 +
 config/examples/Anet/A6/Configuration_adv.h   |   2 +
 config/examples/Anet/A8/Configuration_adv.h   |   2 +
 .../examples/AnyCubic/i3/Configuration_adv.h  |   2 +
 config/examples/ArmEd/Configuration_adv.h     |   2 +
 .../BIBO/TouchX/cyclops/Configuration_adv.h   |   2 +
 .../BIBO/TouchX/default/Configuration_adv.h   |   2 +
 .../examples/BQ/Hephestos/Configuration_adv.h |   2 +
 .../BQ/Hephestos_2/Configuration_adv.h        |   2 +
 config/examples/BQ/WITBOX/Configuration_adv.h |   2 +
 config/examples/Cartesio/Configuration_adv.h  |   2 +
 .../Creality/CR-10/Configuration_adv.h        |   2 +
 .../Creality/CR-10S/Configuration_adv.h       |   2 +
 .../Creality/CR-10_5S/Configuration_adv.h     |   2 +
 .../Creality/CR-10mini/Configuration_adv.h    |   2 +
 .../Creality/CR-8/Configuration_adv.h         |   2 +
 .../Creality/Ender-2/Configuration_adv.h      |   2 +
 .../Creality/Ender-3/Configuration_adv.h      |   2 +
 .../Creality/Ender-4/Configuration_adv.h      |   2 +
 .../examples/Einstart-S/Configuration_adv.h   |   2 +
 config/examples/Felix/Configuration_adv.h     |   2 +
 .../FlashForge/CreatorPro/Configuration_adv.h |   2 +
 .../FolgerTech/i3-2020/Configuration_adv.h    |   2 +
 .../Formbot/Raptor/Configuration_adv.h        |   2 +
 .../Formbot/T_Rex_2+/Configuration_adv.h      |   8 +-
 .../Formbot/T_Rex_3/Configuration_adv.h       |   2 +
 .../Geeetech/A10M/Configuration_adv.h         |   2 +
 .../Geeetech/A20M/Configuration_adv.h         |   2 +
 .../Geeetech/MeCreator2/Configuration_adv.h   |   2 +
 .../Prusa i3 Pro C/Configuration_adv.h        |   2 +
 .../Prusa i3 Pro W/Configuration_adv.h        |   2 +
 .../Infitary/i3-M508/Configuration_adv.h      |   2 +
 .../examples/JGAurora/A5/Configuration_adv.h  |   2 +
 .../examples/MakerParts/Configuration_adv.h   |   2 +
 .../examples/Malyan/M150/Configuration_adv.h  |   2 +
 .../examples/Malyan/M200/Configuration_adv.h  |   2 +
 .../Micromake/C1/enhanced/Configuration_adv.h |   2 +
 config/examples/Mks/Robin/Configuration_adv.h |   2 +
 config/examples/Mks/Sbase/Configuration_adv.h |   2 +
 .../RapideLite/RL200/Configuration_adv.h      |   2 +
 config/examples/RigidBot/Configuration_adv.h  |   2 +
 config/examples/SCARA/Configuration_adv.h     |   2 +
 .../examples/Sanguinololu/Configuration_adv.h |   2 +
 config/examples/TheBorg/Configuration_adv.h   |   2 +
 config/examples/TinyBoy2/Configuration_adv.h  |   2 +
 .../examples/Tronxy/X3A/Configuration_adv.h   |   2 +
 .../Tronxy/X5S-2E/Configuration_adv.h         |   2 +
 .../UltiMachine/Archim1/Configuration_adv.h   |   2 +
 .../UltiMachine/Archim2/Configuration_adv.h   |   2 +
 .../examples/VORONDesign/Configuration_adv.h  |   2 +
 .../Velleman/K8200/Configuration_adv.h        |   2 +
 .../Velleman/K8400/Configuration_adv.h        |   2 +
 .../WASP/PowerWASP/Configuration_adv.h        |   2 +
 .../Wanhao/Duplicator 6/Configuration_adv.h   |   2 +
 .../delta/Anycubic/Kossel/Configuration_adv.h |   2 +
 .../FLSUN/auto_calibrate/Configuration_adv.h  |   2 +
 .../delta/FLSUN/kossel/Configuration_adv.h    |   2 +
 .../FLSUN/kossel_mini/Configuration_adv.h     |   2 +
 .../Geeetech/Rostock 301/Configuration_adv.h  |   2 +
 .../delta/MKS/SBASE/Configuration_adv.h       |   2 +
 .../Tevo Little Monster/Configuration_adv.h   |   2 +
 .../delta/generic/Configuration_adv.h         |   2 +
 .../delta/kossel_mini/Configuration_adv.h     |   2 +
 .../delta/kossel_xl/Configuration_adv.h       |   2 +
 .../gCreate/gMax1.5+/Configuration_adv.h      |   2 +
 config/examples/makibox/Configuration_adv.h   |   2 +
 .../tvrrug/Round2/Configuration_adv.h         |   2 +
 config/examples/wt150/Configuration_adv.h     |   2 +
 91 files changed, 443 insertions(+), 123 deletions(-)
 create mode 100644 Marlin/src/feature/babystep.cpp
 create mode 100644 Marlin/src/feature/babystep.h

diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 69ffe00d14..070aefe194 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/Marlin/src/core/utility.cpp b/Marlin/src/core/utility.cpp
index 261a27eefb..79c7018f51 100644
--- a/Marlin/src/core/utility.cpp
+++ b/Marlin/src/core/utility.cpp
@@ -214,6 +214,19 @@ void safe_delay(millis_t ms) {
     return &conv[1];
   }
 
+  // Convert signed float to string (5 digit) with -1.2345 / _0.0000 / +1.2345 format
+  char* ftostr54sign(const float &f, char plus/*=' '*/) {
+    long i = (f * 100000 + (f < 0 ? -5: 5)) / 10;
+    conv[0] = i ? MINUSOR(i, plus) : ' ';
+    conv[1] = DIGIMOD(i, 10000);
+    conv[2] = '.';
+    conv[3] = DIGIMOD(i, 1000);
+    conv[4] = DIGIMOD(i, 100);
+    conv[5] = DIGIMOD(i, 10);
+    conv[6] = DIGIMOD(i, 1);
+    return &conv[0];
+  }
+
   // Convert unsigned float to rj string with 12345 format
   char* ftostr5rj(const float &f) {
     const long i = ((f < 0 ? -f : f) * 10 + 5) / 10;
diff --git a/Marlin/src/core/utility.h b/Marlin/src/core/utility.h
index 37e9c9e2e1..1ea4c4b0a3 100644
--- a/Marlin/src/core/utility.h
+++ b/Marlin/src/core/utility.h
@@ -91,6 +91,9 @@ inline void serial_delay(const millis_t ms) {
   // Convert signed float to string (6 digit) with -1.234 / _0.000 / +1.234 format
   char* ftostr43sign(const float &x, char plus=' ');
 
+  // Convert signed float to string (5 digit) with -1.2345 / _0.0000 / +1.2345 format
+  char* ftostr54sign(const float &x, char plus=' ');
+
   // Convert unsigned float to rj string with 12345 format
   char* ftostr5rj(const float &x);
 
diff --git a/Marlin/src/feature/I2CPositionEncoder.cpp b/Marlin/src/feature/I2CPositionEncoder.cpp
index 7707d624ba..c1c20021ea 100644
--- a/Marlin/src/feature/I2CPositionEncoder.cpp
+++ b/Marlin/src/feature/I2CPositionEncoder.cpp
@@ -38,6 +38,8 @@
 #include "../module/stepper.h"
 #include "../gcode/parser.h"
 
+#include "../feature/babystep.h"
+
 #include <Wire.h>
 
 void I2CPositionEncoder::init(const uint8_t address, const AxisEnum axis) {
@@ -169,7 +171,7 @@ void I2CPositionEncoder::update() {
             const int32_t errorP = int32_t(sumP * (1.0f / (I2CPE_ERR_PRST_ARRAY_SIZE)));
             SERIAL_ECHO(axis_codes[encoderAxis]);
             SERIAL_ECHOLNPAIR(" - err detected: ", errorP * planner.steps_to_mm[encoderAxis], "mm; correcting!");
-            thermalManager.babystepsTodo[encoderAxis] = -LROUND(errorP);
+            babystep.add_steps(encoderAxis, -LROUND(errorP));
             errPrstIdx = 0;
           }
         }
@@ -180,7 +182,7 @@ void I2CPositionEncoder::update() {
       if (ABS(error) > threshold * planner.settings.axis_steps_per_mm[encoderAxis]) {
         //SERIAL_ECHOLN(error);
         //SERIAL_ECHOLN(position);
-        thermalManager.babystepsTodo[encoderAxis] = -LROUND(error / 2);
+        babystep.add_steps(encoderAxis, -LROUND(error / 2));
       }
     #endif
 
diff --git a/Marlin/src/feature/babystep.cpp b/Marlin/src/feature/babystep.cpp
new file mode 100644
index 0000000000..efce79a092
--- /dev/null
+++ b/Marlin/src/feature/babystep.cpp
@@ -0,0 +1,135 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "../inc/MarlinConfig.h"
+
+#if ENABLED(BABYSTEPPING)
+
+#include "babystep.h"
+#include "../Marlin.h"
+#include "../module/planner.h"
+#include "../module/stepper.h"
+
+#if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
+  #include "../gcode/gcode.h"
+#endif
+
+Babystep babystep;
+
+volatile int16_t Babystep::todo[BS_TODO_AXIS(Z_AXIS) + 1];
+
+#if HAS_LCD_MENU
+  int16_t Babystep::accum;
+  #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+    int16_t Babystep::axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];
+  #endif
+#endif
+
+void Babystep::step_axis(const AxisEnum axis) {
+  const int16_t curTodo = todo[BS_TODO_AXIS(axis)]; // get rid of volatile for performance
+  if (curTodo) {
+    stepper.babystep((AxisEnum)axis, curTodo > 0);
+    if (curTodo > 0) todo[BS_TODO_AXIS(axis)]--; else todo[BS_TODO_AXIS(axis)]++;
+  }
+}
+
+void Babystep::task() {
+  #if EITHER(BABYSTEP_XY, I2C_POSITION_ENCODERS)
+    LOOP_XYZ(axis) step_axis((AxisEnum)axis);
+  #else
+    step_axis(Z_AXIS);
+  #endif
+}
+
+void Babystep::add_mm(const AxisEnum axis, const float &mm) {
+  add_steps(axis, mm * planner.settings.axis_steps_per_mm[axis]);
+}
+
+void Babystep::add_steps(const AxisEnum axis, const int32_t distance) {
+
+  #if ENABLED(BABYSTEP_WITHOUT_HOMING)
+    #define CAN_BABYSTEP(AXIS) true
+  #else
+    extern uint8_t axis_known_position;
+    #define CAN_BABYSTEP(AXIS) TEST(axis_known_position, AXIS)
+  #endif
+
+  if (!CAN_BABYSTEP(axis)) return;
+
+  #if HAS_LCD_MENU
+    accum += distance; // Count up babysteps for the UI
+    #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+      axis_total[BS_TOTAL_AXIS(axis)] += distance;
+    #endif
+  #endif
+
+  #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
+    #define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: enable_X(); break; case Y_AXIS: enable_Y(); break; case Z_AXIS: enable_Z(); } }while(0)
+  #else
+    #define BSA_ENABLE(AXIS) NOOP
+  #endif
+
+  #if IS_CORE
+    #if ENABLED(BABYSTEP_XY)
+      switch (axis) {
+        case CORE_AXIS_1: // X on CoreXY and CoreXZ, Y on CoreYZ
+          BSA_ENABLE(CORE_AXIS_1);
+          BSA_ENABLE(CORE_AXIS_2);
+          todo[CORE_AXIS_1] += distance * 2;
+          todo[CORE_AXIS_2] += distance * 2;
+          break;
+        case CORE_AXIS_2: // Y on CoreXY, Z on CoreXZ and CoreYZ
+          BSA_ENABLE(CORE_AXIS_1);
+          BSA_ENABLE(CORE_AXIS_2);
+          todo[CORE_AXIS_1] += CORESIGN(distance * 2);
+          todo[CORE_AXIS_2] -= CORESIGN(distance * 2);
+          break;
+        case NORMAL_AXIS: // Z on CoreXY, Y on CoreXZ, X on CoreYZ
+        default:
+          BSA_ENABLE(NORMAL_AXIS);
+          todo[NORMAL_AXIS] += distance;
+          break;
+      }
+    #elif CORE_IS_XZ || CORE_IS_YZ
+      // Only Z stepping needs to be handled here
+      BSA_ENABLE(CORE_AXIS_1);
+      BSA_ENABLE(CORE_AXIS_2);
+      todo[CORE_AXIS_1] += CORESIGN(distance * 2);
+      todo[CORE_AXIS_2] -= CORESIGN(distance * 2);
+    #else
+      BSA_ENABLE(Z_AXIS);
+      todo[Z_AXIS] += distance;
+    #endif
+  #else
+    #if ENABLED(BABYSTEP_XY)
+      BSA_ENABLE(axis);
+    #else
+      BSA_ENABLE(Z_AXIS);
+    #endif
+    todo[BS_TODO_AXIS(axis)] += distance;
+  #endif
+  #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
+    gcode.reset_stepper_timeout();
+  #endif
+}
+
+#endif // BABYSTEPPING
diff --git a/Marlin/src/feature/babystep.h b/Marlin/src/feature/babystep.h
new file mode 100644
index 0000000000..3f22fac11f
--- /dev/null
+++ b/Marlin/src/feature/babystep.h
@@ -0,0 +1,63 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#include "../inc/MarlinConfigPre.h"
+#include "../core/enum.h"
+
+#if IS_CORE || EITHER(BABYSTEP_XY, I2C_POSITION_ENCODERS)
+  #define BS_TODO_AXIS(A) A
+#else
+  #define BS_TODO_AXIS(A) 0
+#endif
+
+#if HAS_LCD_MENU && ENABLED(BABYSTEP_DISPLAY_TOTAL)
+  #if ENABLED(BABYSTEP_XY)
+    #define BS_TOTAL_AXIS(A) A
+  #else
+    #define BS_TOTAL_AXIS(A) 0
+  #endif
+#endif
+
+class Babystep {
+public:
+  static volatile int16_t todo[BS_TODO_AXIS(Z_AXIS) + 1];
+  #if HAS_LCD_MENU
+    static int16_t accum;                                     // Total babysteps in current edit
+    #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+      static int16_t axis_total[BS_TOTAL_AXIS(Z_AXIS) + 1];   // Total babysteps since G28
+      static inline void reset_total(const AxisEnum axis) {
+        #if ENABLED(BABYSTEP_XY)
+          if (axis == Z_AXIS)
+        #endif
+            axis_total[BS_TOTAL_AXIS(axis)] = 0;
+      }
+    #endif
+  #endif
+  static void add_steps(const AxisEnum axis, const int32_t distance);
+  static void add_mm(const AxisEnum axis, const float &mm);
+  static void task();
+private:
+  static void step_axis(const AxisEnum axis);
+};
+
+extern Babystep babystep;
diff --git a/Marlin/src/gcode/calibrate/G28.cpp b/Marlin/src/gcode/calibrate/G28.cpp
index 684c2e216b..1a6922cfa4 100644
--- a/Marlin/src/gcode/calibrate/G28.cpp
+++ b/Marlin/src/gcode/calibrate/G28.cpp
@@ -428,7 +428,7 @@ void GcodeSuite::G28(const bool always_home_all) {
 
   // Restore the active tool after homing
   #if HOTENDS > 1 && (DISABLED(DELTA) || ENABLED(DELTA_HOME_TO_SAFE_ZONE))
-    #if ENABLED(PARKING_EXTRUDER) || ENABLED(DUAL_X_CARRIAGE)
+    #if EITHER(PARKING_EXTRUDER, DUAL_X_CARRIAGE)
       #define NO_FETCH false // fetch the previous toolhead
     #else
       #define NO_FETCH true
diff --git a/Marlin/src/gcode/motion/M290.cpp b/Marlin/src/gcode/motion/M290.cpp
index e1222688e6..b816b5b9ab 100644
--- a/Marlin/src/gcode/motion/M290.cpp
+++ b/Marlin/src/gcode/motion/M290.cpp
@@ -25,6 +25,7 @@
 #if ENABLED(BABYSTEPPING)
 
 #include "../gcode.h"
+#include "../../feature/babystep.h"
 #include "../../module/probe.h"
 #include "../../module/temperature.h"
 #include "../../module/planner.h"
@@ -64,7 +65,7 @@ void GcodeSuite::M290() {
     for (uint8_t a = X_AXIS; a <= Z_AXIS; a++)
       if (parser.seenval(axis_codes[a]) || (a == Z_AXIS && parser.seenval('S'))) {
         const float offs = constrain(parser.value_axis_units((AxisEnum)a), -2, 2);
-        thermalManager.babystep_axis((AxisEnum)a, offs * planner.settings.axis_steps_per_mm[a]);
+        babystep.add_mm((AxisEnum)a, offs);
         #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
           if (a == Z_AXIS && (!parser.seen('P') || parser.value_bool())) mod_zprobe_zoffset(offs);
         #endif
@@ -72,7 +73,7 @@ void GcodeSuite::M290() {
   #else
     if (parser.seenval('Z') || parser.seenval('S')) {
       const float offs = constrain(parser.value_axis_units(Z_AXIS), -2, 2);
-      thermalManager.babystep_axis(Z_AXIS, offs * planner.settings.axis_steps_per_mm[Z_AXIS]);
+      babystep.add_mm(Z_AXIS, offs);
       #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
         if (!parser.seen('P') || parser.value_bool()) mod_zprobe_zoffset(offs);
       #endif
diff --git a/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp b/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
index 56127b5464..d400915e7e 100644
--- a/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
+++ b/Marlin/src/lcd/HD44780/ultralcd_HD44780.cpp
@@ -1025,7 +1025,7 @@ void MarlinUI::draw_status_screen() {
   }
 
   void draw_edit_screen(PGM_P const pstr, const char* const value/*=NULL*/) {
-    lcd_moveto(1, 1);
+    lcd_moveto(0, 1);
     lcd_put_u8str_P(pstr);
     if (value != NULL) {
       lcd_put_wchar(':');
diff --git a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
index ca953f7b5d..f8d95e8f18 100644
--- a/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/ultralcd_DOGM.cpp
@@ -389,7 +389,7 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
     if (value != NULL) {
       lcd_put_wchar(':');
       if (extra_row) {
-        // Assume the value is numeric (with no descender)
+        // Assume that value is numeric (with no descender)
         baseline += EDIT_FONT_ASCENT + 2;
         onpage = PAGE_CONTAINS(baseline - (EDIT_FONT_ASCENT - 1), baseline);
       }
diff --git a/Marlin/src/lcd/extensible_ui/ui_api.cpp b/Marlin/src/lcd/extensible_ui/ui_api.cpp
index 3965371439..aa71743e12 100644
--- a/Marlin/src/lcd/extensible_ui/ui_api.cpp
+++ b/Marlin/src/lcd/extensible_ui/ui_api.cpp
@@ -97,6 +97,10 @@
   #include "../../feature/runout.h"
 #endif
 
+#if ENABLED(BABYSTEPPING)
+  #include "../../feature/babystep.h"
+#endif
+
 inline float clamp(const float value, const float minimum, const float maximum) {
   return MAX(MIN(value, maximum), minimum);
 }
@@ -584,10 +588,10 @@ namespace ExtUI {
     bool babystepAxis_steps(const int16_t steps, const axis_t axis) {
       switch (axis) {
         #if ENABLED(BABYSTEP_XY)
-          case X: thermalManager.babystep_axis(X_AXIS, steps); break;
-          case Y: thermalManager.babystep_axis(Y_AXIS, steps); break;
+          case X: babystep.add_steps(X_AXIS, steps); break;
+          case Y: babystep.add_steps(Y_AXIS, steps); break;
         #endif
-        case Z: thermalManager.babystep_axis(Z_AXIS, steps); break;
+        case Z: babystep.add_steps(Z_AXIS, steps); break;
         default: return false;
       };
       return true;
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index 862f8a1998..b5b77e21d4 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -903,6 +903,9 @@
 #ifndef MSG_BABYSTEP_Z
   #define MSG_BABYSTEP_Z                      _UxGT("Babystep Z")
 #endif
+#ifndef MSG_BABYSTEP_TOTAL
+  #define MSG_BABYSTEP_TOTAL                  _UxGT("Total")
+#endif
 #ifndef MSG_ENDSTOP_ABORT
   #define MSG_ENDSTOP_ABORT                   _UxGT("Endstop abort")
 #endif
diff --git a/Marlin/src/lcd/menu/menu.cpp b/Marlin/src/lcd/menu/menu.cpp
index 0365df2356..219c24a4f3 100644
--- a/Marlin/src/lcd/menu/menu.cpp
+++ b/Marlin/src/lcd/menu/menu.cpp
@@ -37,7 +37,7 @@
   #include "../../module/configuration_store.h"
 #endif
 
-#if WATCH_HOTENDS || WATCH_BED || ENABLED(BABYSTEP_ZPROBE_OFFSET)
+#if WATCH_HOTENDS || WATCH_BED
   #include "../../module/temperature.h"
 #endif
 
@@ -352,6 +352,8 @@ void MarlinUI::completion_feedback(const bool good/*=true*/) {
 
 #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
 
+  #include "../../feature/babystep.h"
+
   void lcd_babystep_zoffset() {
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
     ui.defer_status_screen();
@@ -376,7 +378,7 @@ void MarlinUI::completion_feedback(const bool good/*=true*/) {
                   ;
       if (WITHIN(new_offs, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
 
-        thermalManager.babystep_axis(Z_AXIS, babystep_increment);
+        babystep.add_steps(Z_AXIS, babystep_increment);
 
         if (do_probe) zprobe_zoffset = new_offs;
         #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
diff --git a/Marlin/src/lcd/menu/menu_tune.cpp b/Marlin/src/lcd/menu/menu_tune.cpp
index b5853b25c2..17d6634437 100644
--- a/Marlin/src/lcd/menu/menu_tune.cpp
+++ b/Marlin/src/lcd/menu/menu_tune.cpp
@@ -65,32 +65,60 @@
 
 #if ENABLED(BABYSTEPPING)
 
-  long babysteps_done = 0;
+  #include "../../feature/babystep.h"
+  #include "../lcdprint.h"
+  #if HAS_GRAPHICAL_LCD
+    #include "../dogm/ultralcd_DOGM.h"
+  #endif
 
-  void _lcd_babystep(const AxisEnum axis, PGM_P msg) {
+  void _lcd_babystep(const AxisEnum axis, PGM_P const msg) {
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
     ui.encoder_direction_normal();
     if (ui.encoderPosition) {
-      const int16_t babystep_increment = (int32_t)ui.encoderPosition * (BABYSTEP_MULTIPLICATOR);
+      const int16_t steps = (int32_t)ui.encoderPosition * (BABYSTEP_MULTIPLICATOR);
       ui.encoderPosition = 0;
       ui.refresh(LCDVIEW_REDRAW_NOW);
-      thermalManager.babystep_axis(axis, babystep_increment);
-      babysteps_done += babystep_increment;
+      babystep.add_steps(axis, steps);
+    }
+    if (ui.should_draw()) {
+      const float spm = planner.steps_to_mm[axis];
+      draw_edit_screen(msg, ftostr54sign(spm * babystep.accum));
+      #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+        const bool in_view = (true
+          #if HAS_GRAPHICAL_LCD
+            && PAGE_CONTAINS(LCD_PIXEL_HEIGHT - MENU_FONT_HEIGHT, LCD_PIXEL_HEIGHT - 1)
+          #endif
+        );
+        if (in_view) {
+          #if HAS_GRAPHICAL_LCD
+            ui.set_font(FONT_MENU);
+            lcd_moveto(0, LCD_PIXEL_HEIGHT - MENU_FONT_DESCENT);
+          #else
+            lcd_moveto(0, LCD_HEIGHT - 1);
+          #endif
+          lcd_put_u8str_P(PSTR(MSG_BABYSTEP_TOTAL ":"));
+          lcd_put_u8str(ftostr54sign(spm * babystep.axis_total[BS_TOTAL_AXIS(axis)]));
+        }
+      #endif
     }
-    if (ui.should_draw())
-      draw_edit_screen(msg, ftostr43sign(planner.steps_to_mm[axis] * babysteps_done));
+  }
+
+  inline void _lcd_babystep_go(const screenFunc_t screen) {
+    ui.goto_screen(screen);
+    ui.defer_status_screen();
+    babystep.accum = 0;
   }
 
   #if ENABLED(BABYSTEP_XY)
     void _lcd_babystep_x() { _lcd_babystep(X_AXIS, PSTR(MSG_BABYSTEP_X)); }
     void _lcd_babystep_y() { _lcd_babystep(Y_AXIS, PSTR(MSG_BABYSTEP_Y)); }
-    void lcd_babystep_x() { ui.goto_screen(_lcd_babystep_x); babysteps_done = 0; ui.defer_status_screen(); }
-    void lcd_babystep_y() { ui.goto_screen(_lcd_babystep_y); babysteps_done = 0; ui.defer_status_screen(); }
+    void lcd_babystep_x() { _lcd_babystep_go(_lcd_babystep_x); }
+    void lcd_babystep_y() { _lcd_babystep_go(_lcd_babystep_y); }
   #endif
 
   #if DISABLED(BABYSTEP_ZPROBE_OFFSET)
     void _lcd_babystep_z() { _lcd_babystep(Z_AXIS, PSTR(MSG_BABYSTEP_Z)); }
-    void lcd_babystep_z() { ui.goto_screen(_lcd_babystep_z); babysteps_done = 0; ui.defer_status_screen(); }
+    void lcd_babystep_z() { _lcd_babystep_go(_lcd_babystep_z); }
   #endif
 
 #endif // BABYSTEPPING
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index c226c180aa..30f63ebed5 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -63,6 +63,10 @@
   #include "../feature/fwretract.h"
 #endif
 
+#if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+  #include "../feature/babystep.h"
+#endif
+
 #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
 #include "../core/debug_out.h"
 
@@ -1316,6 +1320,14 @@ void set_axis_is_at_home(const AxisEnum axis) {
     }
   #endif
 
+  #if ENABLED(I2C_POSITION_ENCODERS)
+    I2CPEM.homed(axis);
+  #endif
+
+  #if ENABLED(BABYSTEP_DISPLAY_TOTAL)
+    babystep.reset_total(axis);
+  #endif
+
   if (DEBUGGING(LEVELING)) {
     #if HAS_HOME_OFFSET
       DEBUG_ECHOLNPAIR("> home_offset[", axis_codes[axis], "] = ", home_offset[axis]);
@@ -1323,10 +1335,6 @@ void set_axis_is_at_home(const AxisEnum axis) {
     DEBUG_POS("", current_position);
     DEBUG_ECHOLNPAIR("<<< set_axis_is_at_home(", axis_codes[axis], ")");
   }
-
-  #if ENABLED(I2C_POSITION_ENCODERS)
-    I2CPEM.homed(axis);
-  #endif
 }
 
 /**
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index e7545ae8cc..d8bf25747e 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -44,7 +44,7 @@
 #endif
 
 #if ENABLED(BABYSTEPPING)
-  #include "../module/motion.h"
+  #include "../feature/babystep.h"
   #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
     #include "../gcode/gcode.h"
   #endif
@@ -239,10 +239,6 @@ hotend_info_t Temperature::temp_hotend[HOTENDS]; // = { 0 }
   //hotend_pid_t Temperature::pid[HOTENDS];
 #endif
 
-#if ENABLED(BABYSTEPPING)
-  volatile int16_t Temperature::babystepsTodo[XYZ] = { 0 };
-#endif
-
 #if ENABLED(PREVENT_COLD_EXTRUSION)
   bool Temperature::allow_cold_extrude = false;
   int16_t Temperature::extrude_min_temp = EXTRUDE_MINTEMP;
@@ -2516,21 +2512,7 @@ void Temperature::isr() {
   //
 
   #if ENABLED(BABYSTEPPING)
-    #if EITHER(BABYSTEP_XY, I2C_POSITION_ENCODERS)
-      LOOP_XYZ(axis) {
-        const int16_t curTodo = babystepsTodo[axis]; // get rid of volatile for performance
-        if (curTodo) {
-          stepper.babystep((AxisEnum)axis, curTodo > 0);
-          if (curTodo > 0) babystepsTodo[axis]--; else babystepsTodo[axis]++;
-        }
-      }
-    #else
-      const int16_t curTodo = babystepsTodo[Z_AXIS];
-      if (curTodo) {
-        stepper.babystep(Z_AXIS, curTodo > 0);
-        if (curTodo > 0) babystepsTodo[Z_AXIS]--; else babystepsTodo[Z_AXIS]++;
-      }
-    #endif
+    babystep.task();
   #endif
 
   // Poll endstops state, if required
@@ -2540,70 +2522,6 @@ void Temperature::isr() {
   planner.tick();
 }
 
-#if ENABLED(BABYSTEPPING)
-
-  #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
-    #define BSA_ENABLE(AXIS) do{ switch (AXIS) { case X_AXIS: enable_X(); break; case Y_AXIS: enable_Y(); break; case Z_AXIS: enable_Z(); } }while(0)
-  #else
-    #define BSA_ENABLE(AXIS) NOOP
-  #endif
-
-  #if ENABLED(BABYSTEP_WITHOUT_HOMING)
-    #define CAN_BABYSTEP(AXIS) true
-  #else
-    #define CAN_BABYSTEP(AXIS) TEST(axis_known_position, AXIS)
-  #endif
-
-  extern uint8_t axis_known_position;
-
-  void Temperature::babystep_axis(const AxisEnum axis, const int16_t distance) {
-    if (!CAN_BABYSTEP(axis)) return;
-    #if IS_CORE
-      #if ENABLED(BABYSTEP_XY)
-        switch (axis) {
-          case CORE_AXIS_1: // X on CoreXY and CoreXZ, Y on CoreYZ
-            BSA_ENABLE(CORE_AXIS_1);
-            BSA_ENABLE(CORE_AXIS_2);
-            babystepsTodo[CORE_AXIS_1] += distance * 2;
-            babystepsTodo[CORE_AXIS_2] += distance * 2;
-            break;
-          case CORE_AXIS_2: // Y on CoreXY, Z on CoreXZ and CoreYZ
-            BSA_ENABLE(CORE_AXIS_1);
-            BSA_ENABLE(CORE_AXIS_2);
-            babystepsTodo[CORE_AXIS_1] += CORESIGN(distance * 2);
-            babystepsTodo[CORE_AXIS_2] -= CORESIGN(distance * 2);
-            break;
-          case NORMAL_AXIS: // Z on CoreXY, Y on CoreXZ, X on CoreYZ
-          default:
-            BSA_ENABLE(NORMAL_AXIS);
-            babystepsTodo[NORMAL_AXIS] += distance;
-            break;
-        }
-      #elif CORE_IS_XZ || CORE_IS_YZ
-        // Only Z stepping needs to be handled here
-        BSA_ENABLE(CORE_AXIS_1);
-        BSA_ENABLE(CORE_AXIS_2);
-        babystepsTodo[CORE_AXIS_1] += CORESIGN(distance * 2);
-        babystepsTodo[CORE_AXIS_2] -= CORESIGN(distance * 2);
-      #else
-        BSA_ENABLE(Z_AXIS);
-        babystepsTodo[Z_AXIS] += distance;
-      #endif
-    #else
-      #if ENABLED(BABYSTEP_XY)
-        BSA_ENABLE(axis);
-      #else
-        BSA_ENABLE(Z_AXIS);
-      #endif
-      babystepsTodo[axis] += distance;
-    #endif
-    #if ENABLED(BABYSTEP_ALWAYS_AVAILABLE)
-      gcode.reset_stepper_timeout();
-    #endif
-  }
-
-#endif // BABYSTEPPING
-
 #if HAS_TEMP_SENSOR
 
   #include "../gcode/gcode.h"
diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h
index 6de0bba660..a8cfad34b3 100644
--- a/Marlin/src/module/temperature.h
+++ b/Marlin/src/module/temperature.h
@@ -266,10 +266,6 @@ class Temperature {
                      soft_pwm_count_fan[FAN_COUNT];
     #endif
 
-    #if ENABLED(BABYSTEPPING)
-      static volatile int16_t babystepsTodo[3];
-    #endif
-
     #if ENABLED(PREVENT_COLD_EXTRUSION)
       static bool allow_cold_extrude;
       static int16_t extrude_min_temp;
@@ -689,10 +685,6 @@ class Temperature {
 
     #endif
 
-    #if ENABLED(BABYSTEPPING)
-      static void babystep_axis(const AxisEnum axis, const int16_t distance);
-    #endif
-
     #if ENABLED(PROBING_HEATERS_OFF)
       static void pause(const bool p);
       FORCE_INLINE static bool is_paused() { return paused; }
diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests
index e8bf1eef55..a5ae42ce73 100755
--- a/buildroot/share/tests/megaatmega2560-tests
+++ b/buildroot/share/tests/megaatmega2560-tests
@@ -69,7 +69,7 @@ exec_test $1 $2 "Azteeg X3 with 5 extruders, RRDFGSC, probeless UBL, Linear Adva
 opt_enable Z_PROBE_SLED SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE
 opt_set LCD_LANGUAGE jp-kana
 opt_disable SEGMENT_LEVELED_MOVES
-opt_enable BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_HOTEND_Z_OFFSET
+opt_enable BABYSTEPPING BABYSTEP_XY BABYSTEP_ZPROBE_OFFSET DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_HOTEND_Z_OFFSET BABYSTEP_DISPLAY_TOTAL
 exec_test $1 $2 "... Sled Z Probe, Skew, UBL Cartesian moves, Japanese, and Z probe BABYSTEPPING"
 
 #
@@ -153,7 +153,7 @@ opt_set EXTRUDERS 2
 opt_set TEMP_SENSOR_1 -4
 opt_set SERVO_DELAY "{ 300, 300, 300 }"
 opt_enable COREYX USE_XMAX_PLUG \
-           REPRAP_DISCOUNT_SMART_CONTROLLER BABYSTEPPING DAC_MOTOR_CURRENT_DEFAULT \
+           REPRAP_DISCOUNT_SMART_CONTROLLER BABYSTEPPING BABYSTEP_DISPLAY_TOTAL DAC_MOTOR_CURRENT_DEFAULT \
            FILAMENT_LCD_DISPLAY FILAMENT_WIDTH_SENSOR \
            ENDSTOP_INTERRUPTS_FEATURE ENDSTOP_NOISE_THRESHOLD FAN_SOFT_PWM SDSUPPORT \
            SWITCHING_TOOLHEAD NUM_SERVOS DEBUG_LEVELING_FEATURE \
diff --git a/config/default/Configuration_adv.h b/config/default/Configuration_adv.h
index a2b403a709..e82396cab2 100644
--- a/config/default/Configuration_adv.h
+++ b/config/default/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration_adv.h b/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
index e50e5ee248..84bc191b0b 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/AlephObjects/TAZ4/Configuration_adv.h b/config/examples/AlephObjects/TAZ4/Configuration_adv.h
index 126bf0a125..e9f373b81f 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration_adv.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/AliExpress/UM2pExt/Configuration_adv.h b/config/examples/AliExpress/UM2pExt/Configuration_adv.h
index 5ed055108f..3d55d7daf9 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration_adv.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Anet/A2/Configuration_adv.h b/config/examples/Anet/A2/Configuration_adv.h
index b51e8f8e65..0dced6ec2e 100644
--- a/config/examples/Anet/A2/Configuration_adv.h
+++ b/config/examples/Anet/A2/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Anet/A2plus/Configuration_adv.h b/config/examples/Anet/A2plus/Configuration_adv.h
index b51e8f8e65..0dced6ec2e 100644
--- a/config/examples/Anet/A2plus/Configuration_adv.h
+++ b/config/examples/Anet/A2plus/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Anet/A6/Configuration_adv.h b/config/examples/Anet/A6/Configuration_adv.h
index ffe17ef8ef..51713dcc62 100644
--- a/config/examples/Anet/A6/Configuration_adv.h
+++ b/config/examples/Anet/A6/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Anet/A8/Configuration_adv.h b/config/examples/Anet/A8/Configuration_adv.h
index 3dc37f0a49..7c7611c23a 100644
--- a/config/examples/Anet/A8/Configuration_adv.h
+++ b/config/examples/Anet/A8/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/AnyCubic/i3/Configuration_adv.h b/config/examples/AnyCubic/i3/Configuration_adv.h
index cc5ab22a9c..e491757f7c 100644
--- a/config/examples/AnyCubic/i3/Configuration_adv.h
+++ b/config/examples/AnyCubic/i3/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/ArmEd/Configuration_adv.h b/config/examples/ArmEd/Configuration_adv.h
index 4d01fd3284..150494a6dc 100644
--- a/config/examples/ArmEd/Configuration_adv.h
+++ b/config/examples/ArmEd/Configuration_adv.h
@@ -1016,6 +1016,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h b/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
index 59839a6502..045afa0e93 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/BIBO/TouchX/default/Configuration_adv.h b/config/examples/BIBO/TouchX/default/Configuration_adv.h
index 3bfd346a27..a44d10d454 100644
--- a/config/examples/BIBO/TouchX/default/Configuration_adv.h
+++ b/config/examples/BIBO/TouchX/default/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/BQ/Hephestos/Configuration_adv.h b/config/examples/BQ/Hephestos/Configuration_adv.h
index d6c5f6e5bd..6012ab6ea4 100644
--- a/config/examples/BQ/Hephestos/Configuration_adv.h
+++ b/config/examples/BQ/Hephestos/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/BQ/Hephestos_2/Configuration_adv.h b/config/examples/BQ/Hephestos_2/Configuration_adv.h
index 026581fc12..f8e7e99ae8 100644
--- a/config/examples/BQ/Hephestos_2/Configuration_adv.h
+++ b/config/examples/BQ/Hephestos_2/Configuration_adv.h
@@ -1017,6 +1017,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/BQ/WITBOX/Configuration_adv.h b/config/examples/BQ/WITBOX/Configuration_adv.h
index d6c5f6e5bd..6012ab6ea4 100644
--- a/config/examples/BQ/WITBOX/Configuration_adv.h
+++ b/config/examples/BQ/WITBOX/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Cartesio/Configuration_adv.h b/config/examples/Cartesio/Configuration_adv.h
index 2b62c187af..229402d7eb 100644
--- a/config/examples/Cartesio/Configuration_adv.h
+++ b/config/examples/Cartesio/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/CR-10/Configuration_adv.h b/config/examples/Creality/CR-10/Configuration_adv.h
index 2b461336b1..d077e71e55 100644
--- a/config/examples/Creality/CR-10/Configuration_adv.h
+++ b/config/examples/Creality/CR-10/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/CR-10S/Configuration_adv.h b/config/examples/Creality/CR-10S/Configuration_adv.h
index 8050e3e8b6..d4cf96bc04 100644
--- a/config/examples/Creality/CR-10S/Configuration_adv.h
+++ b/config/examples/Creality/CR-10S/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/CR-10_5S/Configuration_adv.h b/config/examples/Creality/CR-10_5S/Configuration_adv.h
index 51ad6ace7e..46b41b97df 100644
--- a/config/examples/Creality/CR-10_5S/Configuration_adv.h
+++ b/config/examples/Creality/CR-10_5S/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/CR-10mini/Configuration_adv.h b/config/examples/Creality/CR-10mini/Configuration_adv.h
index 61e36a3521..af4b4164c2 100644
--- a/config/examples/Creality/CR-10mini/Configuration_adv.h
+++ b/config/examples/Creality/CR-10mini/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/CR-8/Configuration_adv.h b/config/examples/Creality/CR-8/Configuration_adv.h
index a2a49599eb..ff49ea25ed 100644
--- a/config/examples/Creality/CR-8/Configuration_adv.h
+++ b/config/examples/Creality/CR-8/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/Ender-2/Configuration_adv.h b/config/examples/Creality/Ender-2/Configuration_adv.h
index 6a6c7524fc..b635bcd9ad 100644
--- a/config/examples/Creality/Ender-2/Configuration_adv.h
+++ b/config/examples/Creality/Ender-2/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/Ender-3/Configuration_adv.h b/config/examples/Creality/Ender-3/Configuration_adv.h
index 61664ae2d0..b728715db1 100644
--- a/config/examples/Creality/Ender-3/Configuration_adv.h
+++ b/config/examples/Creality/Ender-3/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Creality/Ender-4/Configuration_adv.h b/config/examples/Creality/Ender-4/Configuration_adv.h
index 695e2f5156..4fac0025cf 100644
--- a/config/examples/Creality/Ender-4/Configuration_adv.h
+++ b/config/examples/Creality/Ender-4/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Einstart-S/Configuration_adv.h b/config/examples/Einstart-S/Configuration_adv.h
index 4325cef660..9db20a5f0e 100644
--- a/config/examples/Einstart-S/Configuration_adv.h
+++ b/config/examples/Einstart-S/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Felix/Configuration_adv.h b/config/examples/Felix/Configuration_adv.h
index dab1979d1c..2465721735 100644
--- a/config/examples/Felix/Configuration_adv.h
+++ b/config/examples/Felix/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/FlashForge/CreatorPro/Configuration_adv.h b/config/examples/FlashForge/CreatorPro/Configuration_adv.h
index 625254fe8f..19356643d8 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration_adv.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration_adv.h
@@ -1008,6 +1008,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/FolgerTech/i3-2020/Configuration_adv.h b/config/examples/FolgerTech/i3-2020/Configuration_adv.h
index 0a0d4f4d12..ca6d48764e 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration_adv.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Formbot/Raptor/Configuration_adv.h b/config/examples/Formbot/Raptor/Configuration_adv.h
index bed4174851..bf9111e962 100644
--- a/config/examples/Formbot/Raptor/Configuration_adv.h
+++ b/config/examples/Formbot/Raptor/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   #define BABYSTEP_ZPROBE_OFFSET            // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration_adv.h b/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
index bac26eed77..5df0d4f669 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration_adv.h
@@ -1000,8 +1000,8 @@
  */
 #define BABYSTEPPING
 #if ENABLED(BABYSTEPPING)
-  //#define BABYSTEP_WITHOUT_HOMING
-  //#define BABYSTEP_XY                     // Also enable X/Y Babystepping. Not supported on DELTA!
+  #define BABYSTEP_WITHOUT_HOMING
+  #define BABYSTEP_XY                       // Also enable X/Y Babystepping. Not supported on DELTA!
   #define BABYSTEP_INVERT_Z false           // Change if Z babysteps should go the other way
   #define BABYSTEP_MULTIPLICATOR 40         // Babysteps are very small. Increase for faster motion.
 
@@ -1009,13 +1009,15 @@
   #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
     #define DOUBLECLICK_MAX_INTERVAL 1250   // Maximum interval between clicks, in milliseconds.
                                             // Note: Extra time may be added to mitigate controller latency.
-    //#define BABYSTEP_ALWAYS_AVAILABLE     // Allow babystepping at all times (not just during movement).
+      #define BABYSTEP_ALWAYS_AVAILABLE     // Allow babystepping at all times (not just during movement).
     //#define MOVE_Z_WHEN_IDLE              // Jump to the move Z menu on doubleclick when printer is idle.
     #if ENABLED(MOVE_Z_WHEN_IDLE)
       #define MOVE_Z_IDLE_MULTIPLICATOR 1   // Multiply 1mm by this factor for the move step size.
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     #define BABYSTEP_HOTEND_Z_OFFSET        // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Formbot/T_Rex_3/Configuration_adv.h b/config/examples/Formbot/T_Rex_3/Configuration_adv.h
index c8c18a7d03..c16275f9e5 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration_adv.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration_adv.h
@@ -1016,6 +1016,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Geeetech/A10M/Configuration_adv.h b/config/examples/Geeetech/A10M/Configuration_adv.h
index 0a5c9805cb..c8e924e7d2 100644
--- a/config/examples/Geeetech/A10M/Configuration_adv.h
+++ b/config/examples/Geeetech/A10M/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Geeetech/A20M/Configuration_adv.h b/config/examples/Geeetech/A20M/Configuration_adv.h
index 5db71efd82..83c8f19a50 100644
--- a/config/examples/Geeetech/A20M/Configuration_adv.h
+++ b/config/examples/Geeetech/A20M/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Geeetech/MeCreator2/Configuration_adv.h b/config/examples/Geeetech/MeCreator2/Configuration_adv.h
index 8c7bf8876f..75e2d4d95e 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration_adv.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
index b83181e6bc..7c72150634 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h	
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
index b83181e6bc..7c72150634 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h	
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h	
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Infitary/i3-M508/Configuration_adv.h b/config/examples/Infitary/i3-M508/Configuration_adv.h
index f6f81e16e3..db288373c4 100644
--- a/config/examples/Infitary/i3-M508/Configuration_adv.h
+++ b/config/examples/Infitary/i3-M508/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/JGAurora/A5/Configuration_adv.h b/config/examples/JGAurora/A5/Configuration_adv.h
index 4114dfb523..73e9ef0c5e 100644
--- a/config/examples/JGAurora/A5/Configuration_adv.h
+++ b/config/examples/JGAurora/A5/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/MakerParts/Configuration_adv.h b/config/examples/MakerParts/Configuration_adv.h
index c37c984f7e..3279351806 100644
--- a/config/examples/MakerParts/Configuration_adv.h
+++ b/config/examples/MakerParts/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Malyan/M150/Configuration_adv.h b/config/examples/Malyan/M150/Configuration_adv.h
index 19d757df08..0217a05aea 100644
--- a/config/examples/Malyan/M150/Configuration_adv.h
+++ b/config/examples/Malyan/M150/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Malyan/M200/Configuration_adv.h b/config/examples/Malyan/M200/Configuration_adv.h
index 3797eaa734..9b34e6f875 100644
--- a/config/examples/Malyan/M200/Configuration_adv.h
+++ b/config/examples/Malyan/M200/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Micromake/C1/enhanced/Configuration_adv.h b/config/examples/Micromake/C1/enhanced/Configuration_adv.h
index 0d335bb2f1..e5a7f28f4c 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration_adv.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Mks/Robin/Configuration_adv.h b/config/examples/Mks/Robin/Configuration_adv.h
index dcc1f08999..f607e7bf6b 100644
--- a/config/examples/Mks/Robin/Configuration_adv.h
+++ b/config/examples/Mks/Robin/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Mks/Sbase/Configuration_adv.h b/config/examples/Mks/Sbase/Configuration_adv.h
index de1d5f856f..6d2f5b19d3 100644
--- a/config/examples/Mks/Sbase/Configuration_adv.h
+++ b/config/examples/Mks/Sbase/Configuration_adv.h
@@ -1013,6 +1013,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/RapideLite/RL200/Configuration_adv.h b/config/examples/RapideLite/RL200/Configuration_adv.h
index 52be9b134b..5be48b10eb 100644
--- a/config/examples/RapideLite/RL200/Configuration_adv.h
+++ b/config/examples/RapideLite/RL200/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/RigidBot/Configuration_adv.h b/config/examples/RigidBot/Configuration_adv.h
index f8ebe771e2..0327e9d861 100644
--- a/config/examples/RigidBot/Configuration_adv.h
+++ b/config/examples/RigidBot/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/SCARA/Configuration_adv.h b/config/examples/SCARA/Configuration_adv.h
index 77f339dfaa..33834da7df 100644
--- a/config/examples/SCARA/Configuration_adv.h
+++ b/config/examples/SCARA/Configuration_adv.h
@@ -1009,6 +1009,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Sanguinololu/Configuration_adv.h b/config/examples/Sanguinololu/Configuration_adv.h
index a8bb70b865..a4031046dd 100644
--- a/config/examples/Sanguinololu/Configuration_adv.h
+++ b/config/examples/Sanguinololu/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/TheBorg/Configuration_adv.h b/config/examples/TheBorg/Configuration_adv.h
index b737bdcbd0..7e8cfb4056 100644
--- a/config/examples/TheBorg/Configuration_adv.h
+++ b/config/examples/TheBorg/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/TinyBoy2/Configuration_adv.h b/config/examples/TinyBoy2/Configuration_adv.h
index a6f1a06952..3531c3a47d 100644
--- a/config/examples/TinyBoy2/Configuration_adv.h
+++ b/config/examples/TinyBoy2/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Tronxy/X3A/Configuration_adv.h b/config/examples/Tronxy/X3A/Configuration_adv.h
index fd60fe20f1..fb6e859e94 100644
--- a/config/examples/Tronxy/X3A/Configuration_adv.h
+++ b/config/examples/Tronxy/X3A/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Tronxy/X5S-2E/Configuration_adv.h b/config/examples/Tronxy/X5S-2E/Configuration_adv.h
index 478e8cfbcd..7bb2d8eb71 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration_adv.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/UltiMachine/Archim1/Configuration_adv.h b/config/examples/UltiMachine/Archim1/Configuration_adv.h
index e15ae34d7e..cd5a795b21 100644
--- a/config/examples/UltiMachine/Archim1/Configuration_adv.h
+++ b/config/examples/UltiMachine/Archim1/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/UltiMachine/Archim2/Configuration_adv.h b/config/examples/UltiMachine/Archim2/Configuration_adv.h
index e0983f67fd..ce24e6ebb5 100644
--- a/config/examples/UltiMachine/Archim2/Configuration_adv.h
+++ b/config/examples/UltiMachine/Archim2/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/VORONDesign/Configuration_adv.h b/config/examples/VORONDesign/Configuration_adv.h
index 43be648505..646ff994c0 100644
--- a/config/examples/VORONDesign/Configuration_adv.h
+++ b/config/examples/VORONDesign/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Velleman/K8200/Configuration_adv.h b/config/examples/Velleman/K8200/Configuration_adv.h
index 4f932bb20e..bcca5b74ee 100644
--- a/config/examples/Velleman/K8200/Configuration_adv.h
+++ b/config/examples/Velleman/K8200/Configuration_adv.h
@@ -1025,6 +1025,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Velleman/K8400/Configuration_adv.h b/config/examples/Velleman/K8400/Configuration_adv.h
index 5966c552ca..8aadb3df20 100644
--- a/config/examples/Velleman/K8400/Configuration_adv.h
+++ b/config/examples/Velleman/K8400/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/WASP/PowerWASP/Configuration_adv.h b/config/examples/WASP/PowerWASP/Configuration_adv.h
index 556e9ddecf..d875ca7b92 100644
--- a/config/examples/WASP/PowerWASP/Configuration_adv.h
+++ b/config/examples/WASP/PowerWASP/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration_adv.h b/config/examples/Wanhao/Duplicator 6/Configuration_adv.h
index 17b7606979..554f1a9ac0 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration_adv.h	
+++ b/config/examples/Wanhao/Duplicator 6/Configuration_adv.h	
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration_adv.h b/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
index 55abbe657c..9fb9c4ce96 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
index d01b8c9fa2..dcac946956 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/FLSUN/kossel/Configuration_adv.h b/config/examples/delta/FLSUN/kossel/Configuration_adv.h
index d01b8c9fa2..dcac946956 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h b/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
index dc89b63ba4..b267a6df22 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h b/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h
index dc89b63ba4..b267a6df22 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h	
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h	
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/MKS/SBASE/Configuration_adv.h b/config/examples/delta/MKS/SBASE/Configuration_adv.h
index cfbb8f2fbd..44d15dfd34 100644
--- a/config/examples/delta/MKS/SBASE/Configuration_adv.h
+++ b/config/examples/delta/MKS/SBASE/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/Tevo Little Monster/Configuration_adv.h b/config/examples/delta/Tevo Little Monster/Configuration_adv.h
index 6bce03b2d9..addcfb04fb 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration_adv.h	
+++ b/config/examples/delta/Tevo Little Monster/Configuration_adv.h	
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/generic/Configuration_adv.h b/config/examples/delta/generic/Configuration_adv.h
index dc89b63ba4..b267a6df22 100644
--- a/config/examples/delta/generic/Configuration_adv.h
+++ b/config/examples/delta/generic/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/kossel_mini/Configuration_adv.h b/config/examples/delta/kossel_mini/Configuration_adv.h
index 401693d3e5..6c599d27e4 100644
--- a/config/examples/delta/kossel_mini/Configuration_adv.h
+++ b/config/examples/delta/kossel_mini/Configuration_adv.h
@@ -1010,6 +1010,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/delta/kossel_xl/Configuration_adv.h b/config/examples/delta/kossel_xl/Configuration_adv.h
index 73b65e367e..4380c01d0e 100644
--- a/config/examples/delta/kossel_xl/Configuration_adv.h
+++ b/config/examples/delta/kossel_xl/Configuration_adv.h
@@ -1011,6 +1011,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/gCreate/gMax1.5+/Configuration_adv.h b/config/examples/gCreate/gMax1.5+/Configuration_adv.h
index 5e2ce4f239..0be67b634e 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration_adv.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/makibox/Configuration_adv.h b/config/examples/makibox/Configuration_adv.h
index df87ed7acb..5fb70cab6b 100644
--- a/config/examples/makibox/Configuration_adv.h
+++ b/config/examples/makibox/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/tvrrug/Round2/Configuration_adv.h b/config/examples/tvrrug/Round2/Configuration_adv.h
index aed613358d..95be68dd89 100644
--- a/config/examples/tvrrug/Round2/Configuration_adv.h
+++ b/config/examples/tvrrug/Round2/Configuration_adv.h
@@ -1012,6 +1012,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
diff --git a/config/examples/wt150/Configuration_adv.h b/config/examples/wt150/Configuration_adv.h
index c3a725e622..57b840d695 100644
--- a/config/examples/wt150/Configuration_adv.h
+++ b/config/examples/wt150/Configuration_adv.h
@@ -1013,6 +1013,8 @@
     #endif
   #endif
 
+  //#define BABYSTEP_DISPLAY_TOTAL          // Display total babysteps since last G28
+
   //#define BABYSTEP_ZPROBE_OFFSET          // Combine M851 Z and Babystepping
   #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
     //#define BABYSTEP_HOTEND_Z_OFFSET      // For multiple hotends, babystep relative Z offsets
-- 
GitLab