anchor.diff:  ;;;
   ;;; Conditions
   
  -(define-condition expected-symbol (program-error)
  -  ((%found :initarg :found :reader found))
  -  (:report
  -   (lambda (condition stream)
  -     (princ "Expected a symbol but found: " stream)
  +(define-condition malformed-binding-var (program-error)
  +  ((%found :initarg :found :reader found))
  +  (:report
  +   (lambda (condition stream)
  +     (princ "Expected a binding var in the form of" stream)
  +     (terpri stream)
  +     (princ "a symbol, but found: " stream)
  +     (print (found condition) stream))))
  +
  +(define-condition malformed-list-form (program-error)
  +  ((%found :initarg :found :reader found))
  +  (:report
  +   (lambda (condition stream)
  +     (princ "Expected a list form in the form of" stream)
  +     (terpri stream)
  +     (princ "a list, but found: " stream)
  +     (print (found condition) stream))))
  +
  +
  +(define-condition malformed-count-form (program-error)
  +  ((%found :initarg :found :reader found))
  +  (:report
  +   (lambda (condition stream)
  +     (princ "Expected a count form in the form of" stream)
  +     (terpri stream)
  +     (princ "a number, but found: " stream)
        (print (found condition) stream))))
   
   (define-condition malformed-body (program-error)
  
positive.code: ;;; Ultimately, this form should be moved to a central place, such as
  ;;; packages.lisp.
  (defpackage #:sicl-iteration
      (:use #:common-lisp)
    ;; Shadow these for now.  Ultimately, import them with
    ;; the rest of the CL package. 
    (:shadow #:dolist #:dotimes #:do #:do*))
  
negative.code: (defmacro dotimes ((var count-form &optional result-form) &body body)
    ;; do some syntax checking
    (unless (symbolp var)
      (error 'malformed-binding-var :found var))
    (unless (or (numberp count-form) (not (constantp count-form)))
      (error 'malformed-count-form :found count-form))
    (unless (proper-list-p body)
      (error 'malformed-body :body body))
    (multiple-value-bind (declarations forms)
  