Super that it works now,
some remarks
if((now - oldTime > 1000))
I would use >= 1000
and the additional ()'s do not add anything
no need to
  attachInterrupt(IRQ_A, CounterIN, FALLING);
  attachInterrupt(IRQ_B, CounterOUT, FALLING);
at the end of every loop, as you do not detach them (you shouldn't)
writing
float litersPerMinute = (1000.0 * liters)/duration;
makes explicit that the math is done in float (it is, as liters is already float, but just looking at the original line it could have been integer math)
for the readability I would group the math and the display statements in the loop, something like
void loop()
{
 unsigned long now = millis();
 if((now - oldTime >= 1000))
 {
  // TIME MATH
  unsigned long duration = now - oldTime;
  oldTime = now;
  // FLOW MATH
  liters = (countIN - countOUT);
  float litersPerMinute = (1000.0 * liters)/duration;
  int LPM = litersPerMinute;    Â
  pulseCount = pulseCountIN - pulseCountOUT;
  pulseCountIN = 0;
  pulseCountOUT = 0;
  flowRate = (1000.0 / duration) * pulseCount);
  unsigned int frac = (flowRate - int(flowRate))*10;
  // DISPLAY RESULTS
  Serial.println(litersPerMinute, 3); Â
  Serial.print("pulseCount: ");
  Serial.print(pulseCount, DEC);
  Serial.println(" "); // to remove trailing digit when printed on lcd iso serial
 }
}
How many pulses do the devices give per liter?