isso ocorre devido ao horário de verão
nos tivemos esse problema em alguns cliente que não reiniciarão o servidor quando houve essa mudança de horário e a SESSIONTIMEZONE do oracle não atualizou que é aonde nós buscamos o valor do fuso horário, para resolver o problema eu fiz uma rotina simples onde eu verifico o processo na própria maquina do usuário
TimeZone: TTimeZoneInformation;
if GetTimeZoneInformation(TimeZone) = TIME_ZONE_ID_DAYLIGHT Then
result := FormatFloat('00', (TimeZone.Bias div -60) + 1) + ':00'
else
result := FormatFloat('00', TimeZone.Bias div -60) + ':00';
isso resolveu nossos problemas com todos os clientes principalmente com aqueles onde o servidor da empresa era em são paulo mas a matriz ficava no nordeste.