anchor.diff:        (local-time:decode-timestamp reference-date)
       (declare (ignore msec sec min hour))
       (multiple-value-bind (msec sec min hour
  -                               day-of-birth month-of-birth year-of-birth)
  +                          day-of-birth month-of-birth year-of-birth)
           (local-time:decode-timestamp date-of-birth)
         (declare (ignore msec sec min hour))
         (let ((had-birthday-p (or (< month-of-birth month)
  
positive.code:   (surname nil :type (or null string))
    (full-name nil :type (or null string))
    (date-of-birth nil :type (or null local-time:date))
    (age nil :type (or null (real 0 (130)))))
  
  (defun legal-age (date-of-birth &optional (reference-date (local-time:now)))
    "The age of  a person born on DATE-OF-BIRTH, as  of REFERENCE-DATE (or
  
negative.code:               1)
             (if had-birthday-p 1 0))))))
  
  (defun player-age (player) 
    (check-type player player)
    (let ((dob (player-date-of-birth player)))
      (if dob
          (let ((legal-age (legal-age dob))
                (recorded-age (player-age% player)))
            (unless (= legal-age recorded-age)
              (setf (player-age% player) legal-age))
            legal-age)
          (player-age% player))))
  
  (defun player-adult-p (player)
    "Reurns a generalized true value if PLAYER is 18 or older.
  