anchor.diff:    (check-type index2 integer)
     (unless (= (array-rank array) 2)
       (error "Invalid number of indices to array ~S." array))
  -  (when (>= index1 (array-dimension array 0))
  +  (when (or (< index1 0)
  +            (>= index1 (array-dimension array 0)))
       (error "Index ~S out of bounds. Must be 0 <= n < ~D~%"
              index1 (array-dimension array 0)))
  -  (when (>= index2 (array-dimension array 1))
  +  (when (or (< index2 0)
  +            (>= index2 (array-dimension array 1)))
       (error "Index ~S out of bounds. Must be 0 <= n < ~D~%"
              index2 (array-dimension array 1)))
     (let ((ofs (+ (* index1 (array-dimension array 1)) index2)))
  
positive.code:   (check-type index2 integer)
    (unless (= (array-rank array) 2)
      (error "Invalid number of indices to array ~S." array))
    (when (>= index1 (array-dimension array 0))
      (error "Index ~S out of bounds. Must be 0 <= n < ~D~%"
             index1 (array-dimension array 0)))
    (when (>= index2 (array-dimension array 1))
      (error "Index ~S out of bounds. Must be 0 <= n < ~D~%"
             index2 (array-dimension array 1)))
    (let ((ofs (+ (* index1 (array-dimension array 1)) index2)))
  
negative.code:   (check-type index integer)
    (unless (= (array-rank array) 1)
      (error "Invalid number of indices to array ~S." array))
    (when (or (< index 0)
              (>= index (array-dimension array 0)))
      (error "Index ~S out of bounds. Must be 0 <= n < ~D~%"
             index (array-dimension array 0)))
    (setf (%row-major-aref array index) value))
  