Unfortunately we run logrotate more than once a day, and it was bogus all day after turning daylight saving on. It seems to be because the "struct tm" fields are initialized with the current date, time 0:00, but with the current time's daylight saving settings. But at 0:00 the tm_isdst was different than the "current" tm_isdst, which causes the mktime+localtime pair to "correct" it by setting the local time back one hour to yesterday's 23:00.
Later, when this structure is filled with today's date from the state file, the tm_isdst is out of sync again, so the next mktime+localtime pair "corrects" it again by setting the clock forward, which will overflow to tomorrow, hence the error messages.
I think initializing the structure with not the current time's tm_isdst, but today 0:00's tm_isdst will fix this issue. If the times are stored with day granularity then the daylight saving state should be also computed similarly.
Best regards Gergely Péli