diff --git a/plugins/context_condition_user.inc b/plugins/context_condition_user.inc
index f7184f0..9c8bdf3 100644
--- a/plugins/context_condition_user.inc
+++ b/plugins/context_condition_user.inc
@@ -19,13 +19,36 @@ class context_condition_user extends context_condition {
     }
     return $values;
   }
-
-  function execute($account) {
-    $roles = $account->roles;
-    foreach ($roles as $rid => $role) {
-      foreach ($this->get_contexts($role) as $context) {
-        $this->condition_met($context, $role);
-      }
-    }
+  
+  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) {
+		$all_roles = user_roles();
+		$users_roles = $account->roles;
+  	foreach ($all_roles as $rid => $role) {
+			foreach ($this->get_contexts($role) as $context) {
+				$options = $this->fetch_from_context($context, 'options');
+				if($options['negate_role'] == 0){
+					if(in_array($role, $users_roles)){
+						$this->condition_met($context, $role);
+					}
+				}
+				else{
+					if(!in_array($role, $users_roles)){
+						$this->condition_met($context, $role);
+					}
+				}
+			}
+		}
+	}
 }
