diff --git a/src/dspam.c b/src/dspam.c
index 1f580c9..6eca27b 100644
--- a/src/dspam.c
+++ b/src/dspam.c
@@ -1,4 +1,4 @@
-/* $Id: dspam.c,v 1.403 2010/08/06 23:36:36 sbajic Exp $ */
+/* $Id: dspam.c,v 1.404 2010/08/08 16:28:45 sbajic Exp $ */
 
 /*
  DSPAM
@@ -2881,6 +2881,7 @@ int retrain_message(DSPAM_CTX *CTX, AGENT_CTX *ATX) {
 
 int ensure_confident_result(DSPAM_CTX *CTX, AGENT_CTX *ATX, int result) {
   int was_spam = 0;
+  int ret = result;
 
   /* Exit if no users available for global group or classification network */
   if (ATX->classify_users && ATX->classify_users->items == 0)
@@ -2907,8 +2908,9 @@ int ensure_confident_result(DSPAM_CTX *CTX, AGENT_CTX *ATX, int result) {
   {
     if (result == DSR_ISSPAM) {
       was_spam = 1;
-      CTX->result = DSR_ISINNOCENT;
       result = DSR_ISINNOCENT;
+      ret = result;
+      CTX->result = result;
     }
     CTX->confidence = 0.60f;
   }
@@ -2926,10 +2928,13 @@ int ensure_confident_result(DSPAM_CTX *CTX, AGENT_CTX *ATX, int result) {
     node_int = c_nt_first (ATX->classify_users, &c_i);
     while (node_int != NULL && result != DSR_ISSPAM) {
       LOGDEBUG ("checking result for user %s", (const char *) node_int->ptr);
-      result = user_classify (ATX, (const char *) node_int->ptr, CTX->signature, NULL);
-      if (result == DSR_ISSPAM) {
+      ret = user_classify (ATX, (const char *) node_int->ptr, CTX->signature, NULL);
+      if (ret == DSR_ISSPAM) {
         LOGDEBUG ("CLASSIFY CATCH: %s", (const char *) node_int->ptr);
+        result = ret;
         CTX->result = result;
+      } else if (ret == DSR_ISINNOCENT || ret == DSR_NONE) {
+        result = ret;
       }
       node_int = c_nt_next (ATX->classify_users, &c_i);
     }
