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:   (multiple-value-bind (vname dname subsystems)
        (pci-find-device vid did ids)
      (when (and vname subsystems)
        (let ((position (bsearch (logior (ash svid 16) sdid) subsystems 2)))
          (if position
              (values vname dname (aref subsystems (1+ position)))
              (values vname dname nil))))))
  
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))
  