anchor.diff:    (multiple-value-bind (metricp setp location)
         (parse-weather-args module message args)
       (cond
  +      ((null location)
  +       (if setp
  +           (reply-to message "You must specify a location to set.")
  +           (reply-to message "You must supply a location.")))
         ((not setp)
          (display-weather module message metricp location))
  -      ((null args)
  -       (reply-to message "You must specify a location to set."))
         ((message-target-is-channel-p message)
          (setf (gethash (first (arguments message)) (locations-of module)) location)
          (save-location-db (locations-of module)
  
positive.code: (defmodule weather weather-module ("weather")
    (api-key :accessor api-key-of :initform nil)
    (default-location :accessor default-location-of :initform nil)
    (locations :accessor locations-of :initform nil)
    (warning-poll :accessor warning-poll-of :initform nil))
  
  (defmethod initialize-module ((module weather-module) config)
  
negative.code: 
  (defun display-weather (module message metricp location)
    (handler-case
        (multiple-value-bind (city local-time weather humidity wind-dir
                                   temp-f dewpoint-f heat-index-f windchill-f
                                   pressure-in wind-mph wind-gust-mph
                                   temp-c dewpoint-c heat-index-c windchill-c
                                   pressure-mb wind-kph wind-gust-kph
                                   forecast high-f low-f high-c low-c)
            (retrieve-current-weather (api-key-of module) location)
  
          (save-weather-config (orcabot-path "data/weather-throttle.lisp"))
          (setf local-time (ppcre:regex-replace "^Last Updated on " local-time ""))
  
          (reply-to message "Current weather for ~a @ ~a" city local-time)
          (cond
            (metricp
             (Reply-to message "~a, Temp: ~aC, Dewpoint: ~aC, ~
                             ~@[Heat Index: ~aC, ~]~
                             ~@[Wind Chill: ~aC, ~]~
                             Humidity: ~a, Pressure: ~amb, ~
                             Wind: ~a ~a/~a kph"
                       weather temp-c dewpoint-c
                       (if (string= heat-index-c "NA") nil heat-index-c)
                       (if (string= windchill-c "NA") nil windchill-c)
                       humidity pressure-mb
                       wind-dir wind-kph wind-gust-kph)
             (reply-to message "Forecast: ~a, High: ~aC, Low: ~aC" forecast high-c low-c))
            (t
             (reply-to message "~a, Temp: ~aF, Dewpoint: ~aF, ~
                             ~@[Heat Index: ~aF, ~]~
                             ~@[Wind Chill: ~aF, ~]~
                             Humidity: ~a, Pressure: ~ain, ~
                             Wind: ~a ~a/~a mph"
                       weather temp-f dewpoint-f
                       (if (string= heat-index-f "NA") nil heat-index-f)
                       (if (string= windchill-f "NA") nil windchill-f)
                       humidity pressure-in
                       wind-dir wind-mph wind-gust-mph)
             (reply-to message "Forecast: ~a, High: ~aF, Low: ~aF" forecast high-f low-f))))
      (weather-error (err)
        (save-weather-config (orcabot-path "data/weather-throttle.lisp"))
  