A few problems found in strtotime may explain this behaviour:
-offset was ADDED to the TS making it applied twice toward GMT (given hour
IS in current TZ so adding the TZ make it GMT+2*TZ)
-some TZ were incorrectly parsed
-some offsets were in minutes and added as is to TS in seconds