Related: can you expand it to include the reverse (geolocation to zip code)? Anyone know of a restful service that might do that, alternatively?
Here's a typical ZIP code database entry:
"74857","Newalla","OK","35.351612","-97.19507","-6","1"
The fields are ZIP code, place name, state, latitude ("-" = south), longitude ("-" = west), time zone, location honors daylight time. So no size or shape for the zone itself, only a location within the zone.
An algorithm might find the geographically nearest ZIP code position for a given argument position and return that result, but it would likely be wrong in many situations where there are a lot of ZIP codes, like urban areas.