anchor.diff:  
   (defun elimination-phase (titles scores)
     "Return a list of one or more titles or authors on the fewest ballots."
  -  (let* ((titles-scores
  +  (let* ((selected-scores
             (remove-if-not (lambda (score)
                              (find (first score) titles :test 'string=))
                            scores))
  -         (ordered-by-ballots (sort (copy-seq titles-scores) #'< :key #'third))
  +         (ordered-by-ballots
  +          (sort (copy-seq selected-scores) #'< :key #'third))
            (cutoff (third (first ordered-by-ballots)))
            (eliminated (remove-if (lambda (score)
                                     (> (third score) cutoff))
  -                                titles-scores)))
  +                                selected-scores)))
       (mapcar #'first eliminated)))
   
  -(defun eliminate (eliminated title-lists)
  -  "Remove the ELIMINATED title or authors from the TITLE-LISTS."
  -  (dotimes (i (length title-lists))
  -    (setf (nth i title-lists)
  -          (set-difference (nth i title-lists) eliminated :test 'string=)))
  -  (remove-if #'null title-lists))
  -
  -(defmacro while (test &body body)
  -  "A little syntactic sugar around DO."
  -  `(do () ((not ,test)) ,@body))
  +(defun eliminate (eliminated category-ballots)
  +  "Remove the ELIMINATED title or authors from the CATEGORY-BALLOTS."
  +  (dotimes (i (length category-ballots))
  +    (setf (nth i category-ballots)
  +          (set-difference (nth i category-ballots) eliminated :test 'string=)))
  +  (remove-if #'null category-ballots))
   
   (defun fraction->string (fraction)
     "Reduce FRACTION and return it as a string."
  
positive.code: (in-package :e-pluribus-hugo)
  
  (defparameter *category-alist*
    '(("1" . "Novel") ("2" . "Novella") ("3" . "Novelette") ("4" . "Short story")
      ("5" . "Non-Fiction Book") ("6" . "Dramatic Presentation")
      ("7" . "Professional Editor") ("8" . "Professional Artist")
      ("9" . "Semiprozine") ("10" . "Fanzine") ("11" . "Fan Writer")
      ("12" . "Fan Artist") ("13" . "John W. Campbell Award (Not a Hugo)")))
  
  (defun categories ()
    (mapcar #'car *category-alist*))
  
  (defun category->description (category)
    "Return the full description of the CATEGORY."
    (cdr (assoc category *category-alist* :test 'string=)))
  
  (defparameter *fields-alist*
    '(('voter . (0 5))
      ('category . (5 8))
      ('title . (27 74))
      ('author . (77 112))))
  
  (defun parse-fields (line)
    "Get the voter ID, category, title, and author from a ballot file line."
    (let ((fields (list)))
      (dolist (field *fields-alist* (nreverse fields))
        (let ((start (first (cdr field)))
  
negative.code:               (fraction->string (second result))
                (third result)))))
  
  (defmacro while (test &body body)
    "A little syntactic sugar around DO."
    `(do () ((not ,test)) ,@body))
  
  (defconstant +maximum-results+ 5)
  
  (defun eph-rule-results (ballots)
  