anchor.diff:              ! element which doesn't exist yet) the binary search can find either
               ! the element before or after where item should be placed.
               if (hi == lo) then
  -                !compare = bit_str_cmp_trot(list(:,hi), item)
  -                compare = bit_str_i0_cmp_trot(list(:,hi), item)
  +                compare = bit_str_cmp_trot(list(:,hi), item)
                   select case(compare)
                   case (0)
                       ! hit!
  
positive.code:                 ! degrades if the pivot is always the smallest element.
                  pivot = (lo + hi)/2
                  call swap_states(states(:,pivot), pops(:,pivot), dat(:,pivot), states(:,lo+1), pops(:,lo+1), dat(:,lo+1))
                  !if (.not.(states(:,lo) .bitstrge. states(:,hi))) then
                  if (.not.(states(:,lo) .bitstrget. states(:,hi))) then
                      call swap_states(states(:,lo), pops(:,lo), dat(:,lo), states(:,hi), pops(:,hi), dat(:,hi))
                  end if
                  !if (.not.(states(:,lo+1) .bitstrge. states(:,hi))) then
                  if (.not.(states(:,lo+1) .bitstrget. states(:,hi))) then
                      call swap_states(states(:,lo+1), pops(:,lo+1), dat(:,lo+1), states(:,hi), pops(:,hi), dat(:,hi))
                  end if
                  !if (.not.(states(:,lo) .bitstrge. states(:,lo+1))) then
                  if (.not.(states(:,lo) .bitstrget. states(:,lo+1))) then
                      call swap_states(states(:,lo), pops(:,lo), dat(:,lo), states(:,lo+1), pops(:,lo+1), dat(:,lo+1))
                  end if
  
  
negative.code:                 ! search algorithm.
                  pos = (hi+lo)/2
  
                  compare = bit_str_cmp_trot(list(:,pos), item)
                  select case(compare)
                  case (0)
                      ! hit!
  