anchor.diff:  
   (defun clock-process-task (task clock) ;; FIX: only remove patterns if they've returned NIL as their first output 4 times in a row.
     "Process TASK on CLOCK. This function processes meta-events like tempo changes, etc, and everything else is sent to to *EVENT-OUTPUT-FUNCTION*."
  -  (with-slots (beats tempo granularity unix-time-at-tempo timestamp-at-tempo time-at-tempo when-tempo-changed) clock
  +  (with-slots (beats tempo granularity timestamp-at-tempo time-at-tempo when-tempo-changed) clock
       (when (null (slot-value task 'next-time)) ;; pstream hasn't started yet.
         (setf (slot-value task 'start-time) beats
               (slot-value task 'next-time) beats))
  
positive.code: 
  (defmethod print-object ((clock clock) stream)
    (with-slots (tempo beats) clock
      (format stream "#<CLOCK :tempo ~f :beats ~f>" tempo beats)))
  
  (defun clock-add (item &optional (clock *clock*))
    (with-slots (tasks tasks-lock) clock
  
negative.code: (defun task-should-run-now-p (task clock)
    "Determine whether TASK should be run now according to CLOCK and TASK's quant, etc."
    (destructuring-bind (quant &optional (phase 0) (offset 0)) (alexandria:ensure-list (quant (slot-value task 'item)))
      (declare (ignore offset))
      (if (typep (slot-value task 'item) 'pstream)
          (if (null (slot-value task 'next-time)) ;; if the pstream has already started, return t
              (or (= 0 quant) ;; a quant of 0 means run immediately without waiting for a specific beat.
  