Using atom to reference state in Clojure
No, you probably don't want to store an atom in the record.  You probably want:

(defn get-current-frame [frame]
  (nth (:frames frame) (:id frame)))

(defn update-current-frame [frame active]
  (assoc frame :id active))

(def f (Frames. [:a :b :c :d :e :f :g] 0))


Then 

&gt; (get-current-frame f)
:a
&gt; (get-current-frame (update-current-frame f 4))
:e


If you feel the need to have an atom:

brain.core&gt; (def f (atom (Frames. [:a :b :c :d :e :f :g] 0)))
#'brain.core/f
brain.core&gt; (get-current-frame @f)
:a
brain.core&gt; (swap! f update-current-frame 4)
#brain.core.Frames{:frames [:a :b :c :d :e :f :g], :id 4}
brain.core&gt; (get-current-frame @f)
:e