diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index f5df7a1e72211392fd2ff2822eab8d83d0e28dfa..5cbe1b4fa7f13b4bbfb916e190ea7e7ed2929e82 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -436,10 +436,9 @@ void manage_heater()
           //K1 defined in Configuration.h in the PID settings
           #define K2 (1.0-K1)
           dTerm[e] = (Kd * (pid_input - temp_dState[e]))*K2 + (K1 * dTerm[e]);
-          temp_dState[e] = pid_input;
-
           pid_output = constrain(pTerm[e] + iTerm[e] - dTerm[e], 0, PID_MAX);
         }
+        temp_dState[e] = pid_input;
     #else 
           pid_output = constrain(target_temperature[e], 0, PID_MAX);
     #endif //PID_OPENLOOP