diff --git a/antispam.admin.inc b/antispam.admin.inc
index 35b4697..1d60687 100755
--- a/antispam.admin.inc
+++ b/antispam.admin.inc
@@ -406,6 +406,9 @@ function antispam_moderator_operations($mode, $submode) {
   if ($submode == 'spam') {
     unset($operations['submit-spam']);
   }
+  else if ($submode == 'ham') { // Added ham filter
+    unset($operations['ham']);
+  }
   else if ($submode == 'unpublished') {
     unset($operations['unpublish']);
   }
@@ -502,6 +505,7 @@ function antispam_callback_queue($mode = '', $submode = '') {
   $valid_modes = array('nodes', 'comments', 'statistics');
   $valid_submodes = array(
     'spam' => t('Spam'),
+    'ham' => t('Ham'),
     'unpublished' => t('Unpublished'),
     'published' => t('Published')
   );
@@ -549,6 +553,10 @@ function antispam_callback_queue($mode = '', $submode = '') {
         if ($key == 'spam') {
           $query->isNotNull('s.content_id');            
         }
+        if ($key == 'ham') {
+          $query->isNull('s.content_id');
+          $query->condition('n.status', COMMENT_NOT_PUBLISHED);        
+        }
         else if ($key == 'unpublished') {
           $query->condition('n.status', COMMENT_NOT_PUBLISHED);
         }
@@ -577,6 +585,10 @@ function antispam_callback_queue($mode = '', $submode = '') {
         if ($key == 'spam') {
           $query->isNotNull('s.content_id');            
         }
+        else if ($key == 'ham') {
+          $query->isNull('s.content_id');
+          $query->condition('c.status', COMMENT_NOT_PUBLISHED);
+        }
         else if ($key == 'unpublished') {
           $query->condition('c.status', 0);
         }
@@ -655,10 +667,13 @@ function _antispam_spaminess_bar($spaminess) {
 function antispam_get_submode_menu($mode, $submode) {
   $out  = '<div><ul class="tabs secondary">';
 
-  $spam_li = $unpublished_li = $published_li = '<li>';
+  $spam_li = $ham_li = $unpublished_li = $published_li = '<li>';
   if ($submode == 'spam') {
     $spam_li = '<li class="active">'; 
   }
+  else if ($submode == 'ham') {
+    $ham_li = '<li class="active">';
+  }
   else if ($submode == 'unpublished') {
     $unpublished_li = '<li class="active">'; 
   }
@@ -666,6 +681,7 @@ function antispam_get_submode_menu($mode, $submode) {
     $published_li = '<li class="active">'; 
   }
   $out .= $spam_li . l(t('Spam'), 'admin/content/antispam/'.$mode.'/spam') . '</li>';
+  $out .= $ham_li . l(t('Ham'), 'admin/content/antispam/'.$mode.'/ham') . '</li>';
   $out .= $unpublished_li . l(t('Unpublished'), 'admin/content/antispam/'.$mode.'/unpublished') . '</li>';
   $out .= $published_li . l(t('Published'), 'admin/content/antispam/'.$mode.'/published') . '</li>';
   $out .= '</ul></div>';
@@ -728,6 +744,10 @@ function antispam_moderation_form($form, &$form_state, $mode = '', $submode = ''
     if ($submode == 'spam') {
       $query->isNotNull('s.content_id');            
     }
+    if ($submode == 'ham') {
+      $query->isNull('s.content_id');  
+      $query->condition('n.status', 0);          
+    }
     else if ($submode == 'unpublished') {
       $query->condition('n.status', 0);
     }
@@ -771,6 +791,10 @@ function antispam_moderation_form($form, &$form_state, $mode = '', $submode = ''
     if ($submode == 'spam') {
       $query->isNotNull('s.content_id');            
     }
+    else if ($submode == 'ham') {
+      $query->isNull('s.content_id');
+      $query->condition('c.status', COMMENT_NOT_PUBLISHED);
+    }
     else if ($submode == 'unpublished') {
       $query->condition('c.status', COMMENT_NOT_PUBLISHED);
     }
