anchor.diff:      (princ (ldb (byte 8 0) (aref vector 7)) s)))
   
   (defun vector-to-colon-separated (vector &optional (case :downcase))
  -  "Convert an 8-element vector to a colon-separated IPv6
  +  "Convert an (SIMPLE-ARRAY (UNSIGNED-BYTE 16) 8) to a colon-separated IPv6
   address. CASE may be :DOWNCASE or :UPCASE."
     (coercef vector 'ipv6-array)
     (check-type case (member :upcase :downcase) "either :UPCASE or :DOWNCASE")
  
positive.code:     (values addr)))
  
  (defun dotted-to-integer (address)
    "Convert a dotted IPv4 address to a 32-bit unsigned integer."
    (vector-to-integer (dotted-to-vector address)))
  
  (defun vector-to-dotted (vector)
  
negative.code:             (ldb (byte 8 0) integer))))
  
  (defun dotted-to-vector (address)
    "Convert a dotted IPv4 address to a (SIMPLE-ARRAY (UNSIGNED-BYTE 8) 4)."
    (check-type address string "a string")
    (let ((addr (make-array 4 :element-type 'ub8 :initial-element 0))
          (split (split-sequence #\. address :count 5)))
  