Index: firmware/App/Controllers/SubstitutionPump.c =================================================================== diff -u -r09bb4a7c085a868d1eb6d886c94ac6c78e5e92de -r7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea --- firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 09bb4a7c085a868d1eb6d886c94ac6c78e5e92de) +++ firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea) @@ -316,7 +316,8 @@ { F32 speedIncrease; BOOL hasTgtBeenReached = FALSE; - F32 currentToTargetDiff = fabs( getSubstitutionPumpTargetRate( pumpId ) - substitutionPumps[ pumpId ].currentPumpSpeed ); + F32 pumpTargetSpeed = getSubstitutionPumpTargetRate( pumpId ) * SUBSTITUTION_PUMP_VOLUME_PER_REV; // Translate from ml/min to RPM. + F32 currentToTargetDiff = fabs( pumpTargetSpeed - substitutionPumps[ pumpId ].currentPumpSpeed ); if ( currentToTargetDiff > NEARLY_ZERO ) { @@ -331,15 +332,15 @@ } // Subtract current speed when target speed is smaller - if ( getSubstitutionPumpTargetRate( pumpId ) < substitutionPumps[ pumpId ].currentPumpSpeed ) + if ( pumpTargetSpeed < substitutionPumps[ pumpId ].currentPumpSpeed ) { speedIncrease *= -1.0F; } substitutionPumps[ pumpId ].currentPumpSpeed += speedIncrease; // If the pump's target speed is set to be 0, do not ramp down set it to zero immediately - if ( getSubstitutionPumpTargetRate( pumpId ) < NEARLY_ZERO ) + if ( pumpTargetSpeed < NEARLY_ZERO ) { substitutionPumps[ pumpId ].currentPumpSpeed = 0.0F; }