anchor.diff:          integer(i0), intent(in) :: excitor(basis_length)
           integer, intent(in) :: excitor_population
           integer(i0), intent(inout) :: cluster_excitor(basis_length)
  -        integer, intent(inout) :: cluster_population
  +        real(p), intent(inout) :: cluster_population
  +        logical,  intent(out) :: allowed
   
           integer :: ibasis, ibit
           integer(i0) :: excitor_excitation(basis_length), excitor_annihilation(basis_length), excitor_creation(basis_length)
  
positive.code:         type(det_info), intent(inout) :: cdet
          type(cluster_t), intent(inout) :: cluster
  
          real(p) :: rand, psize
          integer :: i, pos, pop, cluster_population, excitor_sgn
          logical :: hit
  
          ! We shall accumulate the factors which comprise cluster%pselect as we go.
          !   cluster%pselect = n_sel p_size p_clust
  
negative.code:         ! Assume all excitors in the cluster are initiators (initiator_flag=0)
          ! until proven otherwise (initiator_flag=1).
          cdet%initiator_flag = 0
  
          ! Assume cluster is allowed unless collapse_cluster finds out otherwise
          ! when collapsing/combining excitors.
          allowed = .true.
  
          select case(cluster%nexcitors)
          case(0)
  