I can't see a bug here.
Though I think it is possible that you may be confused.
When dealing with Daylight Savings Time, for instance my own time zone is: Central Standard Time. (Though at this moment it is Central Daylights Savings Time). CST and CDT.
When we are on CST we are -6 hours from GMT. While on CDT (right this moment) we are -5 hours from GMT.
The only possible issue I can see as far as "zzz" goes, is that it returns "-0600" while Daylight Savings is in effect, instead of -0500. However, we do have $daylight to help with that.