anchor.diff:                  end do
                   !$omp end do
   
  -                ndeath_nc = 0
                   if (ccmc_in%full_nc .and. qs%psip_list%nstates > 0) then
                       ! Do death exactly and directly for non-composite clusters
                       ! Ordering in reduction between ndeath_nc and nparticles_change has been
                       ! changed which stops a problem with intel compilers v17-v19.
                       ! See https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/806597
  -                    !$omp do schedule(dynamic,200) private(dfock) reduction(+:nparticles_change, ndeath_nc)
  +                    !$omp do schedule(dynamic,200)
                       do iattempt = 1, qs%psip_list%nstates
                           ! Note we use the (encoded) population directly in stochastic_ccmc_death_nc
                           ! (unlike the stochastic_ccmc_death) to avoid unnecessary decoding/encoding
  
positive.code:                 call init_mc_cycle(qs%psip_list, qs%spawn_store%spawn, qs%estimators(1)%nattempts, ndeath, &
                                     min_attempts=nint(abs(D0_normalisation), kind=int_64), &
                                     complx=sys%read_in%comp)
                  nparticles_change = 0.0_p
  
                  ! We need to count spawning attempts differently as there may be multiple spawns
                  ! per cluster
                  nattempts_spawn=0
                  ! Find cumulative population...
                  ! NOTE: for simplicity we only consider the integer part of the population on each excitor.
                  ! (Populations under 1 are stochastically rounded in the annihilation process, so each excitor in the list has
  
negative.code:                 ! default(none) on when making changes and ensure that the only
                  ! errors relate to the procedure pointers...
                  !$omp parallel default(none) &
                  !$omp private(it, iexcip_pos, i, seen_D0, dfock) &
                  !$omp shared(rng, cumulative_abs_real_pops, tot_abs_real_pop,  &
                  !$omp        max_cluster_size, contrib, D0_normalisation, D0_pos, rdm,    &
                  !$omp        qs, sys, bloom_stats, min_cluster_size, ref_det,             &
                  !$omp        selection_data, ex_lvl_dist, ccmc_in, nprocs, ms_stats, &
                  !$omp        ps_stats, qmc_in, load_bal_in, logging_info) &
                  !$omp reduction(+:D0_population_cycle,proj_energy_cycle,nattempts_spawn,ndeath,nparticles_change,ndeath_nc)
                  
                  ! Initialise private variables inside the parallel region
                  it = get_thread_id()
                  iexcip_pos = 0
                  seen_D0 = .false.
                  
                  !$omp do schedule(dynamic,200) 
                  do iattempt = 1, selection_data%nclusters
                      if (iattempt <= selection_data%nsingle_excitors) then
                          ! As noncomposite clusters can't be above truncation level or linked-only all can accumulate +
  