Given that you said you only care about first 3 characters, you could maybe even use this additional change which only matches on the customer's first 3 supplied postal code characters:

Code:
                       } else {
                            $zipcode_zones = explode(',', strtoupper(str_replace(' ', '', $zipcode_table)));
                            if (in_array(substr($this->dest_zipcode, 0, 3), $zipcode_zones)) {
                                $this->dest_zone = $i;
                            }
                        }
... and then only define 3-char patterns in the module's list of supported postal codes.