anchor.diff:                   sequence
                    :key key
                    :start start
  -                 :end end))
  +                 :end end
  +                 :count count))
   
   (defun nsubstitute-if (newitem predicate sequence &key key (start 0) end) ; from-end
     (unless key (setf key 'identity))
  
positive.code:                                                :element-type (array-element-type sequence)
                                                 :initial-contents sequence))))
               (dotimes (i (- end start))
                 (when (funcall predicate (funcall key (elt new-sequence (+ start i))))
                   (setf (elt new-sequence (+ start i)) newitem)))
               new-sequence))))
  
  (defun substitute-if-not (newitem predicate sequence &key key (start 0) end) ; from-end
    (substitute-if newitem (complement predicate) sequence
                   :key key
                   :start start
                   :end end))
  
  (defun substitute (newitem olditem sequence &key test test-not key (start 0) end) ; from-end
    (when (and test test-not)
      (error "Both :TEST and :TEST-NOT specified"))
    (when test-not (setf test (complement test-not)))
  
negative.code:                  result-vector)))
              (t (error "~S is not a subtype of SEQUENCE." result-type))))))
  
  (defun substitute-if (newitem predicate sequence &key key (start 0) end count) ; from-end
    (check-type count (or null integer))
    (unless key (setf key 'identity))
    (cond ((and (listp sequence)
                (zerop start)
                (null end))
           (mapcar (lambda (x)
                     (if (and (funcall predicate (funcall key x))
                              (or (null count)
                                  (>= (decf count) 0)))
                         newitem
                         x))
                   sequence))
  