anchor.diff:    (if (eq :all names)
         (if (null package)
             (clrhash *test-db*)
  -          (remhash (find-package package) *test-db*))
  +          (progn
  +            (remhash (find-package package) *test-db*)
  +            (remhash (find-package package) *tag-db*)))
         (let ((table (package-table package)))
           (unless (null table)
  +          ;; Remove tests
             (loop for name in names
                   always (remhash name table)
                   collect name into removed
  -                finally (return removed))))))
  +                finally (return removed))
  +          ;; Remove tests from tags
  +          (loop with tags = (package-tags package)
  +                for tag being each hash-key in tags
  +                using (hash-value tagged-tests)
  +                do
  +                (setf
  +                 (gethash tag tags)
  +                 (set-difference tagged-tests names))))))))
   
   ;;; Manage tags
   
  
positive.code:            :assert-error)
    ;; Functions for managing tests
    (:export :define-test
             :get-tests
             :get-test-code
             :get-test-documentation
             :remove-tests
             :run-tests
             :use-debugger)
    ;; Functions for managing tags
    (:export :get-tags
             :get-tagged-tests
             :remove-tags
             :run-tags)
    ;; Functions for reporting test results
  
negative.code:               name package)
          (doc unit-test))))
  
  (defun test-code (name &optional (package *package*))
    "Returns the code stored for the test name."
    (let ((unit-test (gethash name (package-table package))))
      (if (null unit-test)
  