anchor.diff:  
   (declaim (special *pci-ids*))
   
  -(defun bsearch (item vector &optional (stride 1))
  +(defun bsearch (item vector &key (stride 1) (key 'identity))
     "Locate ITEM using a binary search through VECTOR."
     ;; IMIN/IMAX are inclusive indicies.
     (do ((imin 0)
  
positive.code:       ((< imax imin)
         nil)
      (let* ((imid (truncate (+ imin imax) 2))
             (elt (aref vector (* imid stride))))
        (cond ((< elt item) (setf imin (1+ imid)))
              ((> elt item) (setf imax (1- imid)))
              (t (return (* imid stride)))))))
  
  (defun pci-find-vendor (id &optional (ids *pci-ids*))
    (let ((position (bsearch id ids 3)))
      (when position
        (values (aref ids (+ position 1))
                (aref ids (+ position 2))))))
  
negative.code:   (multiple-value-bind (vname devices)
        (pci-find-vendor vid ids)
      (when (and vname devices)
        (let ((position (bsearch did devices :stride 3)))
          (when position
            (values vname
                    (aref devices (+ position 1))
  