diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index cb70013246e..4a5f7a7e5f9 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -226,7 +226,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
 
     unsigned long ms = millis();
 
-    if (temp_meas_ready == true) { // temp sample ready
+    if (temp_meas_ready) { // temp sample ready
       updateTemperaturesFromRawValues();
 
       input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
@@ -1172,32 +1172,27 @@ enum TempState {
   StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle
 };
 
-#ifdef TEMP_SENSOR_1_AS_REDUNDANT
-  #define TEMP_SENSOR_COUNT 2
-#else
-  #define TEMP_SENSOR_COUNT EXTRUDERS
-#endif
-
-static unsigned long raw_temp_value[TEMP_SENSOR_COUNT] = { 0 };
+static unsigned long raw_temp_value[4] = { 0 };
 static unsigned long raw_temp_bed_value = 0;
 
 static void set_current_temp_raw() {
-  #ifndef HEATER_0_USES_MAX6675
+  #if HAS_TEMP_0 && !defined(HEATER_0_USES_MAX6675)
     current_temperature_raw[0] = raw_temp_value[0];
   #endif
-  #if EXTRUDERS > 1
+  #if HAS_TEMP_1
+    #ifdef TEMP_SENSOR_1_AS_REDUNDANT
+      redundant_temperature_raw =
+    #endif
     current_temperature_raw[1] = raw_temp_value[1];
-    #if EXTRUDERS > 2
+    #if HAS_TEMP_2
       current_temperature_raw[2] = raw_temp_value[2];
-      #if EXTRUDERS > 3
+      #if HAS_TEMP_3
         current_temperature_raw[3] = raw_temp_value[3];
       #endif
     #endif
   #endif
-  #ifdef TEMP_SENSOR_1_AS_REDUNDANT
-    redundant_temperature_raw = raw_temp_value[1];
-  #endif
   current_temperature_bed_raw = raw_temp_bed_value;
+  temp_meas_ready = true;
 }
 
 //
@@ -1507,18 +1502,16 @@ ISR(TIMER0_COMPB_vect) {
   } // switch(temp_state)
 
   if (temp_count >= OVERSAMPLENR) { // 10 * 16 * 1/(16000000/64/256)  = 164ms.
-    if (!temp_meas_ready) { //Only update the raw values if they have been read. Else we could be updating them during reading.
-      set_current_temp_raw();
-    } //!temp_meas_ready
+    // Update the raw values if they've been read. Else we could be updating them during reading.
+    if (!temp_meas_ready) set_current_temp_raw();
 
     // Filament Sensor - can be read any time since IIR filtering is used
     #if HAS_FILAMENT_SENSOR
       current_raw_filwidth = raw_filwidth_value >> 10;  // Divide to get to 0-16384 range since we used 1/128 IIR filter approach
     #endif
 
-    temp_meas_ready = true;
     temp_count = 0;
-    for (int i = 0; i < TEMP_SENSOR_COUNT; i++) raw_temp_value[i] = 0;
+    for (int i = 0; i < 4; i++) raw_temp_value[i] = 0;
     raw_temp_bed_value = 0;
 
     #ifndef HEATER_0_USES_MAX6675