diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 6cd9f863ed..ca11329548 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -6491,7 +6491,7 @@ inline void gcode_M503() {
    */
   inline void gcode_M905() {
     stepper.synchronize();
-    stepper.advance_M905();
+    stepper.advance_M905(code_seen('K') ? code_value_float() : -1.0);
   }
 #endif
 
diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 32d0cddade..8d1fe031e1 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -1123,8 +1123,8 @@ void Stepper::microstep_readings() {
 
 #if ENABLED(LIN_ADVANCE)
 
-  void Stepper::advance_M905() {
-    if (code_seen('K')) extruder_advance_k = code_value_float();
+  void Stepper::advance_M905(const float &k) {
+    if (k >= 0) extruder_advance_k = k;
     SERIAL_ECHO_START;
     SERIAL_ECHOPAIR("Advance factor: ", extruder_advance_k);
     SERIAL_EOL;
diff --git a/Marlin/stepper.h b/Marlin/stepper.h
index 279db1807f..7612e60587 100644
--- a/Marlin/stepper.h
+++ b/Marlin/stepper.h
@@ -256,7 +256,7 @@ class Stepper {
     }
 
     #if ENABLED(LIN_ADVANCE)
-      void advance_M905();
+      void advance_M905(const float &k);
       FORCE_INLINE int get_advance_k() { return extruder_advance_k; }
     #endif