diff --git a/plugins/context_condition_user.inc b/plugins/context_condition_user.inc
index f7184f0..0fd2d46 100644
--- a/plugins/context_condition_user.inc
+++ b/plugins/context_condition_user.inc
@@ -20,11 +20,43 @@ class context_condition_user extends context_condition {
     return $values;
   }
 
+  function options_form($context){
+    $defaults = $this->fetch_from_context($context, 'options');
+      return array(
+        'negate_role' => array(
+        '#title' => t('Make role a negative condition'),
+        '#type' => 'checkbox',
+        '#description' => t("Checking this box will make this condition fire if the user's role is NOT one of the role's checked"),
+        '#default_value' => isset($defaults['negate_role']) ? $defaults['negate_role'] : 0,
+      ),
+    );
+  }
+
   function execute($account) {
-    $roles = $account->roles;
-    foreach ($roles as $rid => $role) {
+    $all_roles = user_roles();
+    $users_roles = $account->roles;
+    foreach ($all_roles as $rid => $role) {
       foreach ($this->get_contexts($role) as $context) {
-        $this->condition_met($context, $role);
+        $options = $this->fetch_from_context($context, 'options');
+        if (empty($options['negate_role'])) {
+          if (in_array($role, $users_roles)){
+            $this->condition_met($context, $role);
+          }
+        }
+        else {
+          $negate_flag = TRUE;
+          foreach ($this->fetch_from_context($context, 'values') as $nid => $negated_role) {
+            if (!in_array($negated_role, $users_roles)) {
+              $negate_flag &= TRUE;
+            }
+            else {
+              $negate_flag &= FALSE;
+            }
+          }
+          if ($negate_flag) {
+            $this->condition_met($context, $role);
+          }
+        }
       }
     }
   }
