diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 79416850be..bcfb9a22dc 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -5039,17 +5039,17 @@ void controllerFan()
   {
     lastMotorCheck = millis();
 
-    if(!READ(X_ENABLE_PIN) || !READ(Y_ENABLE_PIN) || !READ(Z_ENABLE_PIN) || (soft_pwm_bed > 0)
+    if((!READ(X_ENABLE_PIN) ^ !(X_ENABLE_ON)) || (!READ(Y_ENABLE_PIN) ^ !(Y_ENABLE_ON)) || (!READ(Z_ENABLE_PIN) ^ !(Z_ENABLE_ON)) || (soft_pwm_bed > 0)
     #if EXTRUDERS > 2
-       || !READ(E2_ENABLE_PIN)
+       || (!READ(E2_ENABLE_PIN) ^ !(E_ENABLE_ON))
     #endif
     #if EXTRUDER > 1
       #if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
-       || !READ(X2_ENABLE_PIN)
+       || (!READ(X2_ENABLE_PIN) ^ !(X_ENABLE_ON))
       #endif
-       || !READ(E1_ENABLE_PIN)
+       || (!READ(E1_ENABLE_PIN) ^ !(E_ENABLE_ON))
     #endif
-       || !READ(E0_ENABLE_PIN)) //If any of the drivers are enabled...
+       || (!READ(E0_ENABLE_PIN) ^ !(E_ENABLE_ON))) //If any of the drivers are enabled...
     {
       lastMotor = millis(); //... set time to NOW so the fan will turn on
     }