anchor.diff:      call bitstring_to_list_in_selection(perMask(1,2), h(1,2), h(0,2), N_int)
   
       if (interesting(i) >= i_gen) then
  +        call get_mask_phase(psi_det_sorted(1,1,interesting(i)), phasemask)
           if(nt == 4) then
  -          call get_d2(det(1,1,i), psi_phasemask(1,1,interesting(i)), bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
  +          call get_d2(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
           else if(nt == 3) then
  -          call get_d1(det(1,1,i), psi_phasemask(1,1,interesting(i)), bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
  +          call get_d1(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
           else
  -          call get_d0(det(1,1,i), psi_phasemask(1,1,interesting(i)), bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
  +          call get_d0(det(1,1,i), phasemask, bannedOrb, banned, mat, mask, h, p, sp, psi_selectors_coef_transp(1, interesting(i)))
           end if
       else 
           if(nt == 4) call past_d2(banned, p, sp)
  
positive.code: end function
  
  
  BEGIN_PROVIDER [ integer(1), psi_phasemask, (N_int*bit_kind_size, 2, N_det)]
    use bitmasks
    implicit none
    
    integer :: i
    do i=1, N_det
      call get_mask_phase(psi_det_sorted(1,1,i), psi_phasemask(1,1,i))
    end do
  END_PROVIDER
  
  
  subroutine assert(cond, msg)
    character(*), intent(in) :: msg
  
negative.code: subroutine get_mask_phase(det, phasemask)
    use bitmasks
    implicit none
    
    integer(bit_kind), intent(in)  :: det(N_int, 2)
    integer(1), intent(out)        :: phasemask(2,N_int*bit_kind_size)
    integer                        :: s, ni, i
    logical                        :: change
    
    phasemask = 0_1
    do s=1,2
      change = .false.
      do ni=1,N_int
        do i=0,bit_kind_size-1
          if(BTEST(det(ni, s), i)) then
            change = .not. change
          endif
          if(change) then
            phasemask(s, ishft(ni-1,bit_kind_shift) + i + 1) = 1_1
          endif
        end do
      end do
    end do
  