 
 (defn maybe-tweak-catalog
   "Slightly tweak the given catalog, returning a new catalog, `rand-percentage`
-  percent of the time."
-  [catalog rand-percentage]
-  (if (< (rand 100) rand-percentage)
-    (rand-catalog-mutation catalog)
-    catalog))
-
-(defn update-catalog [catalog]
-  (assoc catalog "producer_timestamp" (time/now)))
+   percent of the time."
+  [catalog rand-percentage stamp]
+  (let [catalog' (assoc catalog "producer_timestamp" stamp)]
+    (if (< (rand 100) rand-percentage)
+      (rand-catalog-mutation catalog')
+      catalog')))
+
+(defn jitter
+  "jitter a timestamp (rand-int n) seconds in the forward direction"
+  [stamp n]
+  (time/plus stamp (time/seconds (rand-int n))))
 
 (defn update-report-run-fields
   "configuration_version, start_time and end_time should always change
    on subsequent report submittions, this changes those fields to avoid
    computing the same hash again (causing constraint errors in the DB)"
-  [report]
-  (assoc report
-         "configuration_version" (ks/uuid)
-         "start_time" (time/now)
-         "end_time" (time/now)
-         "producer_timestamp" (time/now)))
+  [report stamp]
+  (-> report
+      (update "resource_events" (partial map #(assoc % "timestamp"
+                                                     (jitter stamp 300))))
+      (assoc "configuration_version" (ks/uuid)
+             "start_time" (time/minus stamp (time/seconds 10))
+             "end_time" (time/minus stamp (time/seconds 5))
+             "producer_timestamp" stamp)))
 
 (defn randomize-map-leaf
   "Randomizes a fact leaf based on a percentage provided with `rp`."


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

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

    hosts catalog changes in accordance to the users preference)

  * Submit the resulting catalog"
  [{:keys [host lastrun catalog report factset
           base-url run-interval rand-percentage] :as state}
   current-time]
  (if-not (time/after?
            current-time
            (time/plus lastrun run-interval))
    state
    (let [catalog (some-> catalog
                          (maybe-tweak-catalog rand-percentage current-time))
          report (some-> report
                         (update-report-run-fields current-time))
          factset (some-> factset
                          (update-factset rand-percentage current-time))]
      ;; Submit the catalog and reports in separate threads, so as to not
      ;; disturb the world-loop and otherwise distort the space-time continuum.
      (when catalog
