anchor.diff:  (defmethod about-module ((module weather-module) stream)
     (format stream "- Weather information provided by wunderground.com~%"))
   
  +(defun retrieve-cached-weather (key location)
  +  (let* ((now (get-universal-time))
  +         (cached-weather (gethash location *weather-cache*)))
  +    (if (or (null cached-weather)
  +            (> now (+ (car cached-weather) *weather-cache-expiration*)))
  +        (let ((weather (multiple-value-list (retrieve-current-weather key location))))
  +          (setf (gethash location *weather-cache*)
  +                (cons now weather))
  +          (values-list weather))
  +        (values-list (rest cached-weather)))))
  +
   (defun parse-weather-args (module message raw-args)
     (let (opts args)
       (dolist (arg raw-args)
  
positive.code: (defun query-wunderground (key feature location)
    "Queries wunderground via the API.  May raise a weather-error."
    (throttle-query key (get-universal-time))
    (let ((doc (retrieve-http-document
                :scheme :http
                :host "api.wunderground.com"
  
negative.code:                                  temp-f dewpoint-f heat-index-f windchill-f
                                   pressure-in wind-mph wind-gust-mph
                                   temp-c)
            (retrieve-cached-weather (api-key-of module) location)
          (declare (ignore icon humidity wind-dir
                           dewpoint-f heat-index-f windchill-f
                           pressure-in wind-mph wind-gust-mph))
  