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.