diff -urN uc_moneris_orig/uc_moneris.module uc_moneris/uc_moneris.module
--- uc_moneris_orig/uc_moneris.module	2009-11-11 14:53:30.000000000 -0500
+++ uc_moneris/uc_moneris.module	2009-11-11 14:52:48.000000000 -0500
@@ -454,9 +454,9 @@
     $mpgResponse  = $mpgHttpPost->getMpgResponse();
     $response_code = $mpgResponse->getResponseCode();
     $txn_number    = $mpgResponse->getTxnNumber();
-    $completed = $mpgResponse->getComplete();
+    $completed = strtolower($mpgResponse->getComplete());
     //Check the CVD?
-    if ($use_cvv == 'enabled') {
+    if ($use_cvv == 'enabled' && (intval($response_code) > 49 || $completed == 'false')) {
       $cvd_response = $mpgResponse->getCvdResultCode();
       if (substr($cvd_response, 1, 1) != 'M') {
         $result = array(
@@ -475,14 +475,14 @@
        return $result;
       }
     }
-    if ($use_avs == 'enabled') {
+    if ($use_avs == 'enabled' && (intval($response_code) > 49 || $completed == 'false')) {
       $avs_response = $mpgResponse->getAvsResultCode();
       $avs_accept = array();
-      if ($order->billing_country == 840) {
-        $avs_accept = array('Z', 'Y', 'P', 'D', 'M');
+      if ($order->billing_country == 840) { // 840 is US
+        $avs_accept = array('Z', 'Y', 'P', 'D', 'M', 'W');
       }
       else {
-        $avs_accept = array('A', 'B', 'D', 'M', 'P', 'Y', 'Z');
+        $avs_accept = array('A', 'B', 'D', 'M', 'P', 'Y', 'Z', 'W');
       }
       if (!in_array($avs_response, $avs_accept)) {
         $message = t('AVS Verification failed with Moneris code @code', array('@code' => $avs_response));
@@ -501,7 +501,7 @@
       }
     }
 
-    if (($this_trans_type == uc_moneris_preauth_string() && $txnType == uc_moneris_transaction_type()) && intval($response_code) < 49 || $completed == 'TRUE') {
+    if (($this_trans_type == uc_moneris_preauth_string() && $txnType == uc_moneris_transaction_type()) && intval($response_code) < 49 || $completed == 'true') {
       //The previous transaction was a preauth before a capture. Run the transaction again in Capture mode.
       $txnArray = array(
         'type'        =>  variable_get('uc_moneris_api_version', '') .'completion',
@@ -540,7 +540,7 @@
   $approval_code = $mpgResponse->getAuthCode();
   $CVDResponse   = $mpgResponse->getCvdResultCode();
   $txn_number    = $mpgResponse->getTxnNumber();
-  $completed     = $mpgResponse->getComplete();
+  $completed     = strtolower($mpgResponse->getComplete());
 
   // Store TxnNumber for a Capture later
   if (!$order->data['TxnNumber']) {
