anchor.diff:      (loop for item across rank
          do (when (numberp item)
   	    (incf total item)))
  -    total))
  -
  -
  -
  +    total))
positive.code:     :name ',name
      :documentation ,docstring))
  
  (defmacro defmessage (name lambda-list &body body)
    `(ensure-message
      :name ',name
      :lambda-list ,(extract-lambda-list lambda-list)
      :participants ,(extract-participants lambda-list)
      :function (block ,name 
  		(lambda ,(eval (extract-lambda-list lambda-list)) ;okay to use eval here. Just symbols
  		  ,@body))
      :body '(block ,name ,@body)))
  
  (defmacro undefmessage (name lambda-list)
    `(undefine-message
      :name ',name
      :participants ,(extract-participants lambda-list)))
  
  (defmacro undefbuzzword (name)
    `(undefine-buzzword
  
negative.code: 			     :message-pointer message) 
  	      (sheep-direct-roles sheep))))
  
  (defun undefine-message (&key name qualifiers participants)
    (remove-messages-with-name-qualifiers-and-participants name qualifiers participants))
  
  (defun undefine-buzzword (&key name)
    (let ((buzzword (find-buzzword name nil)))
  