diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp
index 364e66d1b6ac844c0303b57145bd8f374d8d4908..947fcb6d86cd5bedb2a57215c0bfc6d8cc0e6dd3 100644
--- a/Marlin/stepper.cpp
+++ b/Marlin/stepper.cpp
@@ -115,7 +115,7 @@ volatile long Stepper::count_position[NUM_AXIS] = { 0 };
 volatile signed char Stepper::count_direction[NUM_AXIS] = { 1, 1, 1, 1 };
 
 #if ENABLED(MIXING_EXTRUDER)
-  long Stepper::counter_M[MIXING_STEPPERS];
+  long Stepper::counter_m[MIXING_STEPPERS];
 #endif
 
 unsigned short Stepper::acc_step_rate; // needed for deceleration start point
@@ -340,7 +340,7 @@ void Stepper::isr() {
 
       #if ENABLED(MIXING_EXTRUDER)
         MIXING_STEPPERS_LOOP(i)
-          counter_M[i] = -(current_block->mix_event_count[i] >> 1);
+          counter_m[i] = -(current_block->mix_event_count[i] >> 1);
       #endif
 
       step_events_completed = 0;
@@ -392,12 +392,12 @@ void Stepper::isr() {
 
         #if ENABLED(MIXING_EXTRUDER)
           // Step mixing steppers proportionally
-          long dir = motor_direction(E_AXIS) ? -1 : 1;
+          bool dir = motor_direction(E_AXIS);
           MIXING_STEPPERS_LOOP(j) {
             counter_m[j] += current_block->steps[E_AXIS];
             if (counter_m[j] > 0) {
               counter_m[j] -= current_block->mix_event_count[j];
-              e_steps[j] += dir;
+              dir ? --e_steps[j] : ++e_steps[j];
             }
           }
         #endif
@@ -433,12 +433,12 @@ void Stepper::isr() {
         #if ENABLED(MIXING_EXTRUDER)
 
           // Step mixing steppers proportionally
-          long dir = motor_direction(E_AXIS) ? -1 : 1;
+          bool dir = motor_direction(E_AXIS);
           MIXING_STEPPERS_LOOP(j) {
             counter_m[j] += current_block->steps[E_AXIS];
             if (counter_m[j] > 0) {
               counter_m[j] -= current_block->mix_event_count[j];
-              e_steps[j] += dir;
+              dir ? --e_steps[j] : ++e_steps[j];
             }
           }
 
@@ -487,9 +487,9 @@ void Stepper::isr() {
           // Tick the counters used for this mix
           MIXING_STEPPERS_LOOP(j) {
             // Step mixing steppers (proportionally)
-            counter_M[j] += current_block->steps[E_AXIS];
+            counter_m[j] += current_block->steps[E_AXIS];
             // Step when the counter goes over zero
-            if (counter_M[j] > 0) En_STEP_WRITE(j, !INVERT_E_STEP_PIN);
+            if (counter_m[j] > 0) En_STEP_WRITE(j, !INVERT_E_STEP_PIN);
           }
         #else // !MIXING_EXTRUDER
           PULSE_START(E);
@@ -520,8 +520,8 @@ void Stepper::isr() {
             count_position[E_AXIS] += count_direction[E_AXIS];
           }
           MIXING_STEPPERS_LOOP(j) {
-            if (counter_M[j] > 0) {
-              counter_M[j] -= current_block->mix_event_count[j];
+            if (counter_m[j] > 0) {
+              counter_m[j] -= current_block->mix_event_count[j];
               En_STEP_WRITE(j, INVERT_E_STEP_PIN);
             }
           }
@@ -691,7 +691,7 @@ void Stepper::isr() {
 
     #define STOP_E_PULSE(INDEX) \
       if (e_steps[INDEX]) { \
-        e_steps[INDEX] < 0 ? ++e_steps[INDEX] : --e_steps[INDEX]; \
+        e_steps[INDEX] <= 0 ? ++e_steps[INDEX] : --e_steps[INDEX]; \
         E## INDEX ##_STEP_WRITE(!INVERT_E_STEP_PIN); \
       }
 
diff --git a/Marlin/stepper.h b/Marlin/stepper.h
index b38b0e8f45bf731a7758f726059bb262346017f5..4a2287c7d7207c1d3cea6f5d18469931cf1ea788 100644
--- a/Marlin/stepper.h
+++ b/Marlin/stepper.h
@@ -152,7 +152,7 @@ class Stepper {
     // Mixing extruder mix counters
     //
     #if ENABLED(MIXING_EXTRUDER)
-      static long counter_M[MIXING_STEPPERS];
+      static long counter_m[MIXING_STEPPERS];
       #define MIXING_STEPPERS_LOOP(VAR) \
         for (uint8_t VAR = 0; VAR < MIXING_STEPPERS; VAR++) \
           if (current_block->mix_event_count[VAR])