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:   integer(bit_kind),intent(in)   :: mask(N_int, 2), det(N_int, 2, N_sel)
    logical, intent(inout)         :: bannedOrb(mo_tot_num, 2), banned(mo_tot_num, mo_tot_num, 2)
    double precision, intent(inout) :: mat(N_states, mo_tot_num, mo_tot_num)
  
    integer :: i, ii, j, k, l, h(0:2,2), p(0:4,2), nt
    integer(bit_kind) :: perMask(N_int, 2), mobMask(N_int, 2), negMask(N_int, 2)
  !   logical :: bandon
  !   
  !   bandon = .false.
    PROVIDE psi_phasemask psi_selectors_coef_transp
    mat = 0d0
    
    do i=1,N_int
  
negative.code: end function
  
  
  
  subroutine assert(cond, msg)
    character(*), intent(in) :: msg
  