anchor.diff:                  ! Flip child sign.
                   if (pop < 0) then
                       ! Positive offspring.
  -                    qmc_spawn%sdata(1,jdet) = qmc_spawn%sdata(1,jdet) + nspawn
  +                    spawn%sdata(1,jdet) = spawn%sdata(1,jdet) + nspawn
                   else
  -                    qmc_spawn%sdata(1,jdet) = qmc_spawn%sdata(1,jdet) - nspawn
  +                    spawn%sdata(1,jdet) = spawn%sdata(1,jdet) - nspawn
                   end if
               else
                   ! Same sign as parent.
                   if (pop > 0) then
                       ! Positive offspring.
  -                    qmc_spawn%sdata(1,jdet) = qmc_spawn%sdata(1,jdet) + nspawn
  +                    spawn%sdata(1,jdet) = spawn%sdata(1,jdet) + nspawn
                   else
  -                    qmc_spawn%sdata(1,jdet) = qmc_spawn%sdata(1,jdet) - nspawn
  +                    spawn%sdata(1,jdet) = spawn%sdata(1,jdet) - nspawn
                   end if
               end if
   
  
positive.code:         use determinant_enumeration
          use diagonalisation, only: generate_hamil
          use qmc_data, only: qmc_in_t, reference_t, walker_t
          use system, only: sys_t, copy_sys_spin_info, set_spin_polarisation
  
          type(sys_t), intent(inout) :: sys
  
negative.code: 
                  ! Find the spawning rate and add to the running
                  ! total.
                  rspawn = rspawn + real(sum(abs(spawn%sdata(1,:))))/nattempts
  
                  call simple_annihilation(spawn, psip_list%walker_population)
  
              end do
  
  