         (do  ; Actually ended
           (when (every? #(% found) [:cue :x :y])
             (controllers/activate-cue! (:cue-grid *show*) (:x found) (:y found) nil))
-          (swap! (:active-effects *show*) #(remove-effect-internal % key)))
+          (swap! (:active-effects *show*) #(remove-effect-internal % key))
+          (clean-cue-temporary-variables (:variables found)))
         (do  ; Starting to end gracefully
           (when (every? #(% found) [:cue :x :y])
             (controllers/report-cue-ending (:cue-grid *show*) (:x found) (:y found) (:id found)))

           :effect (get (:effects @(:active-effects *show*)) index)
           :ending ((:ending @(:active-effects *show*)) (keyword key)))))

(defn end-effect!
  "Shut down an effect that is running in [[*show*]]. Unless a `true`
  value is passed for `:force`, this is done by asking the effect to

  (doseq [k (map :key (:meta @(:active-effects *show*)))]
    (end-effect! k :force true)))

(defn- introduce-cue-variables
  "Creates any temporary variable parameters specified by the cue
  variable list, and returns the var-map that the effect creation
