 (defn make-reaction [f & {:keys [auto-run on-set on-dispose derefed]}]
   (let [runner (if (= auto-run true) run auto-run)
         active (not (nil? derefed))
-        dirty (not active)
+        dirty (if (not active) is-dirty clean)
         reaction (Reaction. f nil dirty active
                             nil nil
                             runner on-set on-dispose)]

      (remove-watch w this))
    (set! watching nil)
    (set! state nil)
    (set! dirty? true)
    (when active?
      (when debug (swap! -running dec))
      (set! active? false))

    (let [oldval state]
      (set! state newval)
      (when on-set
        (set! dirty? is-dirty)
        (on-set oldval newval))
      (-notify-watches a oldval newval)
      newval))
