             case DOMAIN_US_OR_CANADA:
             {
                 
-                var usValid:Boolean = true;
-                var caValid:Boolean = true;
-                
+                var valid:Boolean = true;
                 var validationResult:ValidationResult;
                 
-                if (validator.validateUSCode(zip) == false)
+                if (len == 5 || len == 9 || len == 10) // US
                 {
-                     validationResult = new ValidationResult(
+                    if (validator.validateUSCode(zip, containsLetters) == false)
+                    {
+                        validationResult = new ValidationResult(
                             true, baseField, "wrongUSFormat",
                             validator.wrongUSFormatError);
                             
-                    usValid = false;
+                        valid = false;
+                    }
+                }
+                else // CA
+                {
+                    if (validator.validateCACode(zip, containsLetters) == false)
+                    {
+                        validationResult = new ValidationResult(
+                            true, baseField, "wrongCAFormat",
+                            validator.wrongCAFormatError);
+                    
+                        valid = false;
+                    }
                 }
                 
-                if (validator.validateCACode(zip) == false)
-                {
-                    validationResult = new ValidationResult(
-                        true, baseField, "wrongCAFormat",
-                        validator.wrongCAFormatError);
-                    
-                    caValid = false;
-                }
-                
-                // if these are both false, then we definitely have the wrong format
-                if (usValid == false && caValid == false)
+                if (!valid)
                 {         
                     results.push(validationResult);
                     return results;

        {
            case DOMAIN_US:
            {
                if (validator.validateUSCode(zip) == false)
                {
                    results.push(new ValidationResult(
                            true, baseField, "wrongUSFormat",

    /**
     *  @private
     */
    private function validateCACode (zip:String, containsLetters:Boolean):Boolean
    {
        var len:int = zip.length;
        
        // check the basics
        if (!containsLetters)
        {
            return false;
        }
