Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r11d4c395ab17920ec910118b7931e67f3bd52154 -r4779ed280eb2174e1be7a26dfd205fd4773b1d19 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 11d4c395ab17920ec910118b7931e67f3bd52154) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 4779ed280eb2174e1be7a26dfd205fd4773b1d19) @@ -1022,12 +1022,12 @@ isCpSpeedOut = ( cpError > tolerance ? TRUE : FALSE ); // Check for measured speed and target speed direction after checking the tolerance. Even if the absolute values are in range the direction - // of target and measured speed should be matching - if ( ( concentratePumps[ pumpId ].currentPumpSpeed > 0.0F ) && ( getMeasuredPumpSpeedMLPM( pumpId ) < 0.0F ) ) + // of target and measured speed should be matching. The target speed internally is always positive so use direction instead. + if ( ( concentratePumps[ pumpId ].direction != CONCENTRATE_PUMP_REVERSE_DIR ) && ( getMeasuredPumpSpeedMLPM( pumpId ) < 0.0F ) ) { isCpSpeedOut = TRUE; } - else if ( ( concentratePumps[ pumpId ].currentPumpSpeed < 0.0F ) && ( getMeasuredPumpSpeedMLPM( pumpId ) > 0.0F ) ) + else if ( ( CONCENTRATE_PUMP_REVERSE_DIR == concentratePumps[ pumpId ].direction ) && ( getMeasuredPumpSpeedMLPM( pumpId ) > 0.0F ) ) { isCpSpeedOut = TRUE; }