diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp
index 1b14172ca7948307b183f96db015a07380387f9b..07128df4fcf1be513b7578bfdb9ca391a38b52b3 100644
--- a/Marlin/src/feature/tmc_util.cpp
+++ b/Marlin/src/feature/tmc_util.cpp
@@ -153,7 +153,7 @@
     #if CURRENT_STEP_DOWN > 0
       // Decrease current if is_otpw is true and driver is enabled and there's been more than 4 warnings
       if (data.is_otpw && st.isEnabled() && st.otpw_count > 4) {
-        st.rms_current(st.getMilliamps() - (CURRENT_STEP_DOWN));
+        st.rms_current(MAX(int16_t(st.getMilliamps() - (CURRENT_STEP_DOWN)), 0));
         #if ENABLED(REPORT_CURRENT_CHANGE)
           st.printLabel();
           SERIAL_ECHOLNPAIR(" current decreased to ", st.getMilliamps());