According to the SRFI-1 description of assoc:
The comparison procedure is used to compare the elements ei of list to
the key parameter in this way:
(= key (car ei)) ; list is (E1 ... En)
That is, the first argument is always key, and the second argument is
one of the list elements. Thus one can reliably find the first entry
of alist whose key is greater than five with
(assoc 5 alist <)
However, the implementation in kawa.lib.lists passes key as the second
argument instead:
(if (test pair:car x) pair
which means that (assoc 5 alist <) will find the first entry of alist
whose key is *less than* five.