diff --git a/Marlin/src/gcode/temperature/M106_M107.cpp b/Marlin/src/gcode/temperature/M106_M107.cpp
index 8b9daa779c984e13aac40a40f8290ef0586f4b52..7150f7db3bafaff92a71e90698ed4010543b9d62 100644
--- a/Marlin/src/gcode/temperature/M106_M107.cpp
+++ b/Marlin/src/gcode/temperature/M106_M107.cpp
@@ -63,7 +63,8 @@ void GcodeSuite::M106() {
  * M107: Fan Off
  */
 void GcodeSuite::M107() {
-  thermalManager.set_fan_speed(parser.byteval('P', active_extruder), 0);
+  const uint8_t p = parser.byteval('P', MIN(active_extruder, FAN_COUNT - 1));
+  thermalManager.set_fan_speed(p, 0);
 }
 
 #endif // FAN_COUNT > 0