Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rcbd3f0ecc32e6f3cb318836da09cfab6fd1e8dc7 -rdf89590f6b810b2c82a84156c9f010ccadecf7cb --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision cbd3f0ecc32e6f3cb318836da09cfab6fd1e8dc7) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision df89590f6b810b2c82a84156c9f010ccadecf7cb) @@ -991,8 +991,10 @@ *************************************************************************/ static void monitorPumpSpeed( CONCENTRATE_PUMPS_T pumpId, ALARM_ID_T alarm ) { - F32 cpTargetSpeed = concentratePumps[ pumpId ].currentPumpSpeed; - F32 cpError = fabs( fabs( getMeasuredPumpSpeedMLPM( pumpId ) ) - cpTargetSpeed ); + // NOTE: make all the values absolute to cover both negative and positive target/measured speeds + F32 cpTargetSpeed = fabs( concentratePumps[ pumpId ].currentPumpSpeed ); + F32 cpMeasSpeed = fabs( getMeasuredPumpSpeedMLPM( pumpId ) ); + F32 cpError = fabs( cpMeasSpeed - cpTargetSpeed ); BOOL isCpSpeedOut = FALSE; F32 tolerance = CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM; DG_OP_MODE_T opMode = getCurrentOperationMode();