anchor.diff:  	  (with-open-file (s expanded-file :if-does-not-exist nil)
   	    (if (not s)
   		(format *error-output* "I couldn't open database file `~A.bib'" expanded-file)
  -		(read-bib-database s))))))
  -  (cited-bib-entries (if *cite-all-entries* t *cite-keys*)
  -		     :min-crossrefs *min-crossrefs*))
  +		(read-bib-database s)))))))
  +
  +(defun check-multiple-cited-equivalent-entries (bib-entries)
  +  (let ((equivalence-classes
  +	 (compute-bib-equivalence-classes))
  +	(bib-keys (mapcar (lambda (entry) (gethash "KEY" entry)) bib-entries)))
  +    (loop for class in equivalence-classes
  +       do (let ((cited-equivalent-entries (remove-if-not (lambda (key) (member key bib-keys :test 'equalp))
  +							 class)))
  +	    (when (> (length cited-equivalent-entries) 1)
  +	      (bib-warn "These equivalent entries have been used: ~{ ~A~}" 
  +			cited-equivalent-entries))))))
  +
  +(defun read-all-bib-files-and-compute-bib-entries ()
  +  (read-all-bib-files)
  +  (let ((bib-entries
  +	 (cited-bib-entries (if *cite-all-entries* t *cite-keys*)
  +			    :min-crossrefs *min-crossrefs*)))
  +    (check-multiple-cited-equivalent-entries bib-entries)
  +    bib-entries))
   
   ;;; Misc functions
   
  
positive.code:       (cond
  	(full
  	 (princ (cdr token) stream))
  	(t ;; FIXME: Handle special characters here (415)
  	 (princ (char (cdr token) 0) stream))))))
  
  (defun format-bibtex-name (stream format-string bibtex-name)
    (let ((string-output nil)
  	(end (length format-string)))
      (cond
        ((null stream) (setq stream (make-string-output-stream)
  
negative.code:   (do ((tokens tokens (cdr tokens))
         (token-index 0 (+ token-index 1)))
        ((null tokens))
      (let ((token (car tokens))
  	  (*print-pretty* nil))
        (unless (zerop token-index)
  	(cond
  	  (inter-token-string
  