anchor.diff:    (when (eq (chunk1 cloud) (chunk2 cloud))
       (error "ZERO-WEIGHT-TO-SELF not implemented for FACTORED-CLOUD")))
   
  -(defmethod activate-cloud ((cloud factored-cloud) reversep)
  +(defmethod activate-cloud* ((cloud factored-cloud) reversep from-fn to-fn)
     ;; Normal chunks are zeroed by HIJACK-MEANS-TO-ACTIVATION.
     (zero-chunk (factored-cloud-shared-chunk cloud))
     (cond ((not reversep)
  -         (activate-cloud (cloud-b cloud) reversep)
  -         (activate-cloud (cloud-a cloud) reversep))
  +         (activate-cloud* (cloud-b cloud) reversep from-fn #'nodes)
  +         (activate-cloud* (cloud-a cloud) reversep #'nodes to-fn))
           (t
  -         (activate-cloud (cloud-a cloud) reversep)
  -         (activate-cloud (cloud-b cloud) reversep))))
  +         (activate-cloud* (cloud-a cloud) reversep from-fn #'nodes)
  +         (activate-cloud* (cloud-b cloud) reversep #'nodes to-fn))))
   
   (defmethod map-segments (fn (cloud factored-cloud))
     (funcall fn (cloud-a cloud))
  
positive.code: (defmethod set-n-stripes (n-stripes (cloud cloud)))
  (defmethod set-max-n-stripes (max-n-stripes (cloud cloud)))
  
  (defgeneric activate-cloud (cloud reversep)
    (:documentation "From OLD-NODES of CHUNK1 calculate the activations
  of CHUNK2 and _add_ them to NODES of CHUNK2. If REVERSEP then swap the
  roles of the chunks. In the simplest case it adds weights (of CLOUD) *
  OLD-NODES (of CHUNK1) to the nodes of the hidden chunk."))
  
  (defgeneric accumulate-cloud-statistics (trainer bm cloud multiplier)
    (:documentation "Take the accumulator of TRAINER that corresponds to
  
negative.code:       (loop for i below (chunk-size (chunk1 cloud)) do
              (setf (matlisp:matrix-ref weights i i) #.(flt 0))))))
  
  (defmethod activate-cloud* ((cloud full-cloud) reversep from-fn to-fn)
    (if (not reversep)
        (let ((weights (weights cloud))
              (from (funcall from-fn (chunk1 cloud)))
              (to (funcall to-fn (chunk2 cloud)))
              (scale (scale2 cloud)))
          (declare (type flt scale)
                   (optimize (speed 3) #.*no-array-bounds-check*))
          (if (use-blas-on-chunk-p (cost-of-gemm weights from :nn)
                                   (chunk1 cloud))
              (matlisp:gemm! scale weights from (flt 1) to)
  