Угу. Получилось вот так, этот перелив нужно изменять с соответствии
с заполнением в текущий момент: //   контроль перелива и достаточности резерва времени на закрытие клапана
if ( (delivery.actual_concentration < delivery.req_concentration) // low concentration 
|| (delivery.live_req_water_pulses <= delivery.actual_water_pulses + (2 * delivery.post_pulses) ) // no reserve for closing valve )
 { // continue pumping // расчет мгновенного значения нужного количества импульсов датчика воды (жидкость 2)  для налитого объема жидкости 1 (концентрат)
void CalculateLiveWater(void) 
{ // required for actual concentrate volume 
     delivery.live_req_sol_volume = (unsigned long) ( ( (long long) delivery.actual_conc_volume * (long long) 10000000 )/delivery.req_concentration ); 
     delivery.live_req_water_volume = delivery.live_req_sol_volume - delivery.actual_conc_volume; 
     delivery.live_req_water_pulses = (unsigned long) ( ( (long long)se[nWaterPulsesPer10L] * (long long)(delivery.live_req_water_volume ) )/10000000 );
 }