anchor.diff:                  allocate(ht%payload(ht%payload_len,ht%nentries*ht%nslots), stat=ierr)
                   call check_allocate('ht%payload', size(ht%payload), ierr)
               end if
  -            allocate(ht%free_entries(ht%max_free_reqd), stat=ierr)
  +            allocate(ht%free_entries(0:ht%max_free_reqd-1), stat=ierr)
               call check_allocate('ht%free_entries', size(ht%free_entries), ierr)
   
               call reset_hash_table(ht)
  
positive.code:             ht%max_free_reqd = max_free_reqd
              ht%seed = seed
  
              allocate(ht%table(ht%nentries,ht%nslots), stat=ierr)
              call check_allocate('ht%table', size(ht%table), ierr)
              if (present(data_label)) then
                  ht%data_label => data_label
  
negative.code:             ! value (i.e. search over hash collisions).
              do i = 1, ht%table(0,pos%islot)
                  pos%indx = ht%table(i,pos%islot)
                  ! If data_label points to an external array, then the first
                  ! dimension might exceed ht%data_len.  We do, however, assume
                  ! the user has only passed in an array of size ht%data_len...
                  if (all(ht%data_label(:ht%data_len,pos%indx) == label)) then
                      pos%ientry = i
                      hit = .true.
                      exit
  