The display of minutes and hours in countDownTimer was rounding up the value, and thus was reporting incorrectly.
If 45 seconds was requested, it starts counting down from '1 minute 45 seconds'. Similarly for counting up, when 30seconds was crossed, it was displaying '1 minute 30 seconds'.
The end value was fine, but reported minutes and hours were incorrect (rounded up) during counting.
The display of minutes and hours in countDownTimer was rounding up the value, and thus was reporting incorrectly. If 45 seconds was requested, it starts counting down from '1 minute 45 seconds'. Similarly for counting up, when 30seconds was crossed, it was displaying '1 minute 30 seconds'. The end value was fine, but reported minutes and hours were incorrect (rounded up) during counting.