Because you can't ever change what happens inside your loop. Suppose _newEndTimeMinutes is 135. Then _newEndTime gets set to 75, and hour is incremented. We do it again: _newEndTime gets set to 75 (_newEndTimeMinutes didn't change, after all), and hour is incremented. We do the loop again: _newEndTime gets set to 75 (_newEndTimeMinutes didn't change, after all), and hour is incremented. We do the loop again....