   ([this id]
   (show/end-effect! (get-in @(.state this) [:cue :key]) :force true :when-id id)))
 
-(defn get-cue-local-variable
-  "Look up the current value for a cue variable which gets created for
-  the lifespan of a running cue. If the cue is currently active,
-  report the value of the corresponding temporary show variable. If
-  not, report the local value we are tracking to be used the next time
-  we start the cue."
+(defn get-cue-variable
+  "Look up the local value we are tracking for a cue variable, to be
+  used when we start the cue."
   [this v]
-  (let [cue-local-key (keyword (:key v))
-        {:keys [x y]} @(.state this)
-        [_ active] (show/find-cue-grid-active-effect *show* x y)]
-    (if active
-      (show/get-variable (get-in active [:variables cue-local-key]))
-      (get-in @(.state this) [:variables cue-local-key]))))
-
-(defn- -bang
+  (let [cue-local-key (keyword (:key v))]
+    (get-in @(.state this) [:variables cue-local-key])))
+
+(defn -bang
   "Respond to a bang message. For the cue control inlet, this acts
   like a press on a grid controller pad: If the cue is not active,
   start it. If it is running, ask it to end; if it is still running
-  after being asked to end, this will kill it. For variable inlets,
-  causes the current value of the variable, if it is defined, to be
-  output to the corresponding outlet. If the variable has no value, or
-  is not a number, the corresponding outlet is simply banged."
+  after being asked to end, this will kill it.
+
+  For variable inlets, sends the most recent value (if any) that has
+  been received by inlet above to establish for the cue when it next
+  starts. If no value has ever been received by the inlet, the
+  corresponding outlet is simply banged."
   [this]
   (let [inlet (.parentGetInlet this)
         {:keys [x y cue]} @(.state this)

      (let [v (nth (cue-variables this) (dec inlet))
            new-value (max new-value (:min v))  ; Restrict range of variable values as per cue specs.
            new-value (min new-value (:max v))]
        (if (keyword? (:key v))
          (show/set-variable! (:key v) new-value)
          (update-cue-local-variable this new-value v))
        (.outlet this inlet new-value)))))

(defn- -notifyDeleted
  "The Max peer object has been deleted, so this instance is no longer
  going to be used. Unregister our cue state notification function,
  and any variable change notification functions, and allow this

          (f cue-local-var (show/get-variable cue-local-var))
          (show/add-variable-set-fn! cue-local-var f)))))))

(defn -init
  "Called during the first phase of object construction with the two
  arguments identifying the grid coordinates of the cue to be tracked.
  Validates that there is a cue there, and allocates object state."
  [x y]
  (core/init)
  (when (nil? *show*)
