4
My thought is the "poor man's" version of this is to simply find the first match in an alphabetized (numericalized?) list.
For example, if you type 10011
You may get an exact match of 10011.
If not, it could give you the first two or three matches it comes to.
For example if 10011 is not in the database, it keeps looking and finds 10019. To cover its bets it could also give the two items above 10019... perhaps 10005 and 10109. (Again just examples).
It would not be dead on, but, I have to think that given how Zip codes are laid out, it would be close enough most of the time.