--- c:\temp\views_handler_argument_numeric.inc	2014-08-07 05:11:00.518115000 +0000
+++ c:\temp\views_handler_argument_numeric.inc.patch	2014-08-07 05:14:47.187514600 +0000
@@ -29,6 +29,8 @@
 
     $options['break_phrase'] = array('default' => FALSE, 'bool' => TRUE);
     $options['not'] = array('default' => FALSE, 'bool' => TRUE);
+    // SUPERHACK: Negate to filter out excluded nodes
+    $options['negate'] = array('default' => FALSE, 'bool' => TRUE);
 
     return $options;
   }
@@ -52,6 +54,16 @@
       '#default_value' => !empty($this->options['not']),
       '#fieldset' => 'more',
     );
+
+    // SUPERHACK: Checking this removes nodes from results where they are tagged with these terms.
+    $form['negate'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Hard remove'),
+      '#description' => t('If selected, nodes matching any of the values for this filter will be removed from results.'),
+      '#default_value' => !empty($this->options['negate']),
+      '#fieldset' => 'more',
+    );    
+    
   }
 
   function title() {
@@ -98,15 +110,27 @@
     }
 
     $placeholder = $this->placeholder();
-    $null_check = empty($this->options['not']) ? '' : "OR $this->table_alias.$this->real_field IS NULL";
-
-    if (count($this->value) > 1) {
-      $operator = empty($this->options['not']) ? 'IN' : 'NOT IN';
-      $this->query->add_where_expression(0, "$this->table_alias.$this->real_field $operator($placeholder) $null_check", array($placeholder => $this->value));
-    }
-    else {
-      $operator = empty($this->options['not']) ? '=' : '!=';
-      $this->query->add_where_expression(0, "$this->table_alias.$this->real_field $operator $placeholder $null_check", array($placeholder => $this->argument));
+    if (empty($this->options['negate'])) {
+      $null_check = empty($this->options['not']) ? '' : "OR $this->table_alias.$this->real_field IS NULL";
+      
+      if (count($this->value) > 1) {
+        $operator = empty($this->options['not']) ? 'IN' : 'NOT IN';
+        $this->query->add_where_expression(0, "$this->table_alias.$this->real_field $operator($placeholder) $null_check", array($placeholder => $this->value));
+      }
+      else {
+        $operator = empty($this->options['not']) ? '=' : '!=';
+        $this->query->add_where_expression(0, "$this->table_alias.$this->real_field $operator $placeholder $null_check", array($placeholder => $this->argument));
+      }
+    } else {
+      // SUPERHACK: Use the 'negate' option to match nodes tagged with a term ID and filter these out
+      $subquery = "SELECT n.nid FROM {node} n INNER JOIN {taxonomy_index} ti ON 
+                     n.nid=ti.nid WHERE ti.tid";
+      if (count($this->value) > 1) {
+        $this->query->add_where_expression(0, "field_concepts_taxonomy_term_data__taxonomy_index.nid NOT IN ($subquery IN ($placeholder))", array($placeholder => $this->value));
+      }
+      else {
+        $this->query->add_where_expression(0, "field_concepts_taxonomy_term_data__taxonomy_index.nid NOT IN ($subquery IN ($placeholder))", array($placeholder => $this->argument));
+      }
     }
   }
 
