anchor.diff:  (defun set-direction (warstat direction)
     (setf (gethash :direction warstat) (or direction :neutral)))
   
  +;;FIXME: doesn't seem to function. Tree freshness should never be nil
   (defun set-tree-freshness (warstat &rest timestamps)
     (setf
      (gethash :tree-freshness warstat)
  
positive.code:           (*ballot-box* (warflagger:make-ballot-box))
            (*text-ballot-box* (warflagger:make-ballot-box))
            (*title-ballot-box* (warflagger:make-ballot-box))
            (*warstat* (make-hash-table))
            (*text-warstat* (make-hash-table))
            (*title-warstat* (make-hash-table))
            (*apply-to* nil)
  
negative.code:     (set-direction warstat direction)
      (multiple-value-bind (ws bb) (applied-to apply-to)
        (unless (warflagger:ballot-box-empty-p ballot-box)
          (warflagger:apply-ballot-box-to-warstats ballot-box warstat))
        (collect-warstats iid warstat)
        ;;FIXME: do we deal with text warstats for nonroot targets?
        (unless (warflagger:ballot-box-empty-p text-ballot-box)
          (warflagger:apply-ballot-box-to-warstats text-ballot-box text-warstat))
        (collect-warstats iid text-warstat :text)
        (unless (warflagger:ballot-box-empty-p title-ballot-box)
          (warflagger:apply-ballot-box-to-warstats title-ballot-box title-warstat))
        (collect-warstats iid title-warstat :title)
        ;;FIXME: Are there cases when an opinion and descendants should not be counted?
        (add-to-replies-count ws
                              (+ (gethash :replies-total warstat 0)
  