Index: firmware/App/Modes/ModeDrain.c =================================================================== diff -u -r67da3f0d10e1143173b1e8c29061097d609d8623 -rbec5bb7634100c96341d19cf89e540a01aa86b1d --- firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision 67da3f0d10e1143173b1e8c29061097d609d8623) +++ firmware/App/Modes/ModeDrain.c (.../ModeDrain.c) (revision bec5bb7634100c96341d19cf89e540a01aa86b1d) @@ -247,9 +247,20 @@ { DG_DRAIN_STATE_T result = DG_DRAIN_STATE_DRAIN; DG_RESERVOIR_ID_T inactiveReservoir = getInactiveReservoir(); + U32 targetVolumeML = getTargetDrainVolumeML(); + BOOL drainStatus = FALSE; + if ( 0 == targetVolumeML ) + { + drainStatus = hasTargetDrainToZeroBeenReached( inactiveReservoir, DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ); + } + else + { + drainStatus = hasTargetDrainToVolumeBeenReached( inactiveReservoir, targetVolumeML, DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ); + } + // if we have reached our target drain to volume (by weight) or cannot drain anymore, we are done draining - go back to generation idle mode - if ( TRUE == hasTargetDrainVolumeBeenReached( inactiveReservoir, DRAIN_WEIGHT_UNCHANGE_TIMEOUT_MS ) ) + if ( TRUE == drainStatus ) { DG_ACID_CONCENTRATES_RECORD_T acid; F32 acidBottleVolML;