anchor.diff:    (with-output-to-string (out)
       (format out "#+xcvb~%(module (")
       (when (build-grain-p grain)
  -      (format out "~@[~%~7,0T:fullname ~S~]" (fullname grain)))
  +      (format out "~@[~%~7,0T:fullname ~S~]" (subseq (fullname grain) 1)))
       (dolist (slot '(author maintainer version licence description long-description))
  -      (when (slot-boundp grain slot)
  +      (when (and (slot-boundp grain slot) (slot-value grain slot))
           (format out "~@[~%~7,0T:~(~A~) ~S~]" slot (slot-value grain slot))))
       (with-slots (load-depends-on compile-depends-on depends-on) grain
         (if (equivalent-deps-p grain)
  
positive.code:                                       file-deps)
                                file-deps)
          :load-depends-on file-deps
  	:pathname (make-pathname
                     :name "BUILD"
                     :type "lisp"
  
negative.code:        (loop
           :for comp-dep :in (slot-value module 'compile-depends-on)
           :for load-dep :in (slot-value module 'load-depends-on)
           :always (or (equal comp-dep load-dep)
  		     (and (consp comp-dep)
  			  (eql (first comp-dep) :compile)
  			  (null (rest (rest comp-dep)))
  			  (if (consp load-dep)
  			      (and (eql (first load-dep) :load)
  				   (null (rest (rest load-dep)))
  				   (equal (second load-dep) (second comp-dep)))
  			      (equal load-dep (second comp-dep))))))))
  
  (defun module-string (grain)
    "Returns a string representation of a module object that can be put at the
  