diff --git a/include/class.filter.php b/include/class.filter.php
index 05f93c7845b7c713eac3690684d1e5815f022918..360d5bc791d2a1ab75f61dd3ece23163a82fdf94 100644
--- a/include/class.filter.php
+++ b/include/class.filter.php
@@ -153,6 +153,10 @@ class Filter {
         $this->update($this->ht, $errors);
     }
 
+    function hasFlag($flag) {
+        return 0 !== ($this->ht['flags'] & $flag);
+    }
+
     function stopOnMatch() {
         return ($this->ht['stop_onmatch']);
     }
@@ -504,6 +508,10 @@ class Filter {
             $vars['target'] = 'Email';
         }
 
+        //Note: this will be set when validating filters
+        if ($vars['email_id'])
+            $emailId = $vars['email_id'];
+
         $sql=' updated=NOW() '
             .',isactive='.db_input($vars['isactive'])
             .',flags='.db_input($vars['flags'])
diff --git a/include/class.filter_action.php b/include/class.filter_action.php
index 3adcac43c07b53a2d1a88bcdb3354ed49da44825..88aa0d091a0499d38a6bd711f20c381cba12a5ae 100644
--- a/include/class.filter_action.php
+++ b/include/class.filter_action.php
@@ -82,10 +82,10 @@ class FilterAction extends VerySimpleModel {
     function setFilterFlag($actions, $flag, $bool) {
         foreach ($actions as $action) {
           $filter = Filter::lookup($action->filter_id);
-          if ($filter) {
-            if ($flag == 'dept') $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, $bool);
-            if ($flag == 'topic') $filter->setFlag(Filter::FLAG_INACTIVE_HT, $bool);
-          }
+          if ($filter && ($flag == 'dept') && ($filter->hasFlag(Filter::FLAG_INACTIVE_DEPT) != $bool))
+            $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, $bool);
+          if ($filter && ($flag == 'topic') && ($filter->hasFlag(Filter::FLAG_INACTIVE_HT) != $bool))
+            $filter->setFlag(Filter::FLAG_INACTIVE_HT, $bool);
         }
     }
 
diff --git a/scp/filters.php b/scp/filters.php
index c83f9eac074175b908b3cea6cf3eaaa75778f64a..25f22df4c2b9557ec061a954749dd5fc1da4162d 100644
--- a/scp/filters.php
+++ b/scp/filters.php
@@ -31,8 +31,6 @@ if($_POST){
             if(!$filter){
                 $errors['err']=sprintf(__('%s: Unknown or invalid'), __('ticket filter'));
             }elseif($filter->update($_POST,$errors)){
-                $filter->setFlag(Filter::FLAG_INACTIVE_DEPT, false);
-                $filter->setFlag(Filter::FLAG_INACTIVE_HT, false);
                 $msg=sprintf(__('Successfully updated %s.'), __('this ticket filter'));
             }elseif(!$errors['err']){
                 $errors['err']=sprintf('%s %s',