this.days = advanceCalendar(calStart, calEnd, (int) units, Calendar.DAY_OF_MONTH);
<BUG>deltaMillis = targetMillis - calStart.getTimeInMillis();
</BUG>
units = deltaMillis / 3600000;
this.hours = advanceCalendar(calStart, calEnd, (int) units, Calendar.HOUR);
<BUG>deltaMillis = targetMillis - calStart.getTimeInMillis();
</BUG>
units = deltaMillis / 60000;
this.minutes = advanceCalendar(calStart, calEnd, (int) units, Calendar.MINUTE);
<BUG>deltaMillis = targetMillis - calStart.getTimeInMillis();
</BUG>
units = deltaMillis / 1000;

this.days = advanceCalendar(calStart, calEnd, (int) units, Calendar.DAY_OF_MONTH);
deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);
units = deltaMillis / 3600000;
this.hours = advanceCalendar(calStart, calEnd, (int) units, Calendar.HOUR);
deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);
units = deltaMillis / 60000;
this.minutes = advanceCalendar(calStart, calEnd, (int) units, Calendar.MINUTE);
deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);
units = deltaMillis / 1000;
