   [hosts num-msgs]
   (log/infof "Sending %s messages for %s hosts, will exit upon completion"
              num-msgs (count hosts))
-  (loop [mutated-hosts hosts
-         msgs-to-send num-msgs]
-    (when-not (zero? msgs-to-send)
-      (recur (mapv update-host mutated-hosts) (dec msgs-to-send)))))
+    (loop [mutated-hosts hosts
+           msgs-to-send num-msgs
+           stamp (time/minus (time/now) (time/minutes (* 30 num-msgs)))]
+      (when-not (zero? msgs-to-send)
+          (recur (mapv (partial update-host stamp) mutated-hosts)
+                 (dec msgs-to-send)
+                 (time/plus stamp (time/minutes 30))))))
 
 (defn world-loop
   "Sends out new _clock tick_ messages to all agents.

(defn update-factset
  "Updates the producer_timestamp to be current, and randomly updates the leaves
   of the factset based on a percentage provided in `rand-percentage`."
  [factset rand-percentage]
  (-> factset
      (assoc "producer_timestamp" (time/now))
      (update "values" (partial randomize-map-leaves rand-percentage))))

(defn timed-update-host


  The time resolution of this loop is 10ms."
  [hosts]
  (loop [last-time (time/now)]
    (let [curr-time (time/now)]

      ;; Send out updated ticks to each agent
      (doseq [host hosts]
