anchor.diff:                  associate(spawned_population => spawn%sdata(spawn%bit_str_len+1:spawn%bit_str_len+spawn%ntypes, i), &
                           tbl=>sys%basis%tensor_label_len)
                       call insert_new_walker(sys, psip_list, annihilation_flags, k, int(spawn%sdata(:tbl,i), i0), &
  -                                           int(spawned_population, int_p), ref)
  +                                           cheby_sign*int(spawned_population, int_p), ref)
                       ! Extract the real sign from the encoded sign.
  -                    real_population = real(spawned_population,p)/psip_list%pop_real_factor
  +                    real_population = cheby_sign*real(spawned_population,p)/psip_list%pop_real_factor
                       psip_list%nparticles = psip_list%nparticles + abs(real_population)
                   end associate
   
  
positive.code:                 ! Annihilate!
                  old_pop = psip_list%pops(:,pos)
                  ! This is the only line different from annihilate_main_list
                  psip_list%pops(:,pos) = int(spawn%sdata(spawn%bit_str_len+1:spawn%bit_str_len+spawn%ntypes,i), int_p)
                  nannihilate = nannihilate + 1
                  ! The change in the number of particles is a bit subtle.
                  ! We need to take into account:
  
negative.code:         type(spawn_t), intent(inout) :: spawn
          integer, intent(inout), optional :: determ_flags(:)
          integer, intent(in), optional :: lower_bound
          logical, intent(in), optional :: using_chebyshev
  
          integer :: i, istart, iend, j, k, pos, spawn_start, disp
          real(p) :: real_population(psip_list%nspaces)
  