diff --git a/shipping/uc_usps/uc_usps.module b/shipping/uc_usps/uc_usps.module
index 258193e..841189c 100644
--- a/shipping/uc_usps/uc_usps.module
+++ b/shipping/uc_usps/uc_usps.module
@@ -334,8 +334,19 @@ function uc_usps_shipping_method() {
  *   JSON object containing rate, error, and debugging information.
  */
 function uc_usps_quote($products, $details, $method) {
-  //drupal_set_message('<pre>'. print_r($products, TRUE) .'</pre>');
-  //drupal_set_message('<pre>'. print_r($details, TRUE) .'</pre>');
+  // The uc_quote AJAX query can fire before the customer has completely
+  // filled out the destination address, so check to see whether the address
+  // has all needed fields. If not, abort.
+  $destination = (object) $details;
+  if (empty($destination->zone)        ||
+      empty($destination->postal_code) ||
+      empty($destination->country)       ) {
+    // Skip this shipping method.
+    return array();
+  }
+
+  $connection_url = 'http://production.shippingapis.com/ShippingAPI.dll';
+
   $services = array();
   $addresses = array((array)variable_get('uc_quote_store_default_address', new stdClass()));
   $packages = _uc_usps_package_products($products, $addresses);
@@ -345,10 +356,6 @@ function uc_usps_quote($products, $details, $method) {
 
   $dest = (object)$details;
 
-  $usps_server = 'production.shippingapis.com';
-  $api_dll = 'ShippingAPI.dll';
-  $connection_url = 'http://'. $usps_server .'/'. $api_dll;
-
   foreach ($packages as $key => $ship_packages) {
     $orig = (object)$addresses[$key];
     $orig->email = variable_get('uc_store_email', '');
@@ -356,7 +363,7 @@ function uc_usps_quote($products, $details, $method) {
     if (strpos($method['id'], 'intl')) {
       $request = uc_usps_intl_rate_request($ship_packages, $orig, $dest);
     }
-    else {
+    elseif ($destination->country == 840) {
       $request = uc_usps_rate_request($ship_packages, $orig, $dest);
     }
 
