anchor.diff:                                 y-sign-extension)))))
       result))
   
  -(defun %%bignum-+/- (x y op)
  +(defun %%bignum-+/- (x y op carry-complement)
     (let* ((carry 0)
            (overflow nil)
            (size nil)
  
positive.code:              (return-from %%bignum-< (< len-y len-x)))))
      ;; Same length, same sign. Subtract them and examine the result.
      (multiple-value-bind (val overflow sign)
          (%%bignum-+/- x y (lambda (a b cin) (- a (+ b cin))))
        (declare (ignore val))
        ;; overflow xor sign.
        (if overflow
  
negative.code:                                         (logand result #xFFFFFFFF))))))
      (let* ((sign (cond (overflow
                          ;; On overflow, extend the carry bit out and populate the last fragment with that.
                          (logxor carry-complement carry))
                         (t
                          ;; Otherwise, sign-extend the second-last fragment out.
                          (ash (%object-ref-unsigned-byte-32 result (- (* size 2) 3)) -31))))
  