anchor.diff:     (sparsity-target
       :type flt
       :initarg :sparsity :initarg :target :initarg :sparsity-target
  -    :reader sparsity-target)
  +    :reader sparsity-target :reader target)
      (cost :type flt :initarg :cost :reader cost)
      (damping :type flt :initarg :damping :reader damping)
      (products :type flt-vector :initarg :products :reader products)
  
positive.code:         on (rest (clouds-up-to-layers dbm))
          while layer
          do (swap-nodes layer-below)
          (let* ((layer*
                  (set-difference layer (visible-and-conditioning-chunks dbm)))
                 (layer-above*
  
negative.code:           (dolist (chunk layer*)
              (when (connects-to-p chunk layer-above* clouds-up-to-layer-above)
                (matlisp:scal! #.(flt 2) (nodes chunk))))
            ;; Activations from conditioning chunks are not doubled.
            ;; Normally, there are biases both in the layer below and
            ;; above, while non-bias conditioning chunks are visible.
            (hijack-means-to-activation layer* conditioning-clouds dbm
                                        :addp t)
            (hijack-means-to-activation layer* conditioning-clouds-above dbm
                                        :addp t)
            (map nil #'set-chunk-mean layer*)
            (swap-nodes layer-below))))
  
  (defun down-dbm (dbm)
  