[For anti-spam purposes, my email address does not appear in canonical form in this message, but if you're not trying to sell me anything, I welcome replies. My username is gobbel, the name of myhost is cogsci.ucsd.edu. -RG]
After digging around a bit more, I discovered that the 20-second offset is due to overzealous compliance with a broken POSIX requirement in version 7.55 of the timezone package. Apparently the POSIX committee, in a moment of idiocy, decreed that POSIX time leave off the leap seconds that have been added to UTC periodically since 1972. There have been 20 of them, leading to the 20-second discrepancy. It appears that this breakage will be remedied in the next release of timezone. The interim cure is to revert to version 7.48-3, in the stable distribution. -Randy