This problem is similar to 4958050. The cause is that the old GregorianCalendar doesn't handle the case that daylight saving time transitions happen at 0:00 (midnight). In the Brazil case, the standard-to-daylight transition happens at 0:00. Adding 1 day to its previous day at 0:00 produces 1:00 next day (transition day). However, add() tries to "adjust" the time to 0:00, and produces 23:00 of the previous day (the same day before the add() call).
This problem was fixed along with the 4958050 fix in 1.5.0 and later.