anchor.diff:        degree = sum(popcnt(xorvec(1:8)))
   
       case default
  -      do l=1,ishft(Nint,1)
  +      integer :: lmax
  +      lmax = ishft(Nint,1)
  +      do l=1,lmax
           xorvec(l) = xor( key1(l), key2(l))
         enddo
  -      degree = sum(popcnt(xorvec(1:l)))
  +      degree = sum(popcnt(xorvec(1:lmax)))
     
     end select
   
  
positive.code:     !DIR$ LOOP COUNT (1000)
      do i=1,sze
        d = 0
        !DIR$ LOOP COUNT MIN(4)
        do m=1,Nint
          d = d + popcnt(xor( key1(m,1,i), key2(m,1)))                 &
                + popcnt(xor( key1(m,2,i), key2(m,2)))
          key_tmp(m,1) = xor(key1(m,1,i),key2(m,1))
          key_tmp(m,2) = xor(key1(m,2,i),key2(m,2))
          degree_alpha = popcnt(key_tmp(m,1)) 
          degree_beta  = popcnt(key_tmp(m,2)) 
        enddo
        if(degree_alpha .gt.3 .or. degree_beta .gt.3 )cycle !! no double excitations of same spin
          degree(l) = ishft(d,-1)
  
negative.code:     do i=1,sze
        d = 0
        exchange_1 = 0
        exchange_2 = 0
        !DIR$ LOOP COUNT MIN(4)
        do m=1,Nint
          d = d + popcnt(xor( key1(m,1,i), key2(m,1)))                 &
                + popcnt(xor( key1(m,2,i), key2(m,2)))
          exchange_1 += popcnt(xor(iand(key1(m,1,i),key1(m,2,i)),iand(key2(m,1),key2(m,2))))  
          exchange_2 += popcnt(iand(xor(key1(m,1,i),key2(m,1)),xor(key1(m,2,i),key2(m,2))))   
        enddo
        if (d > 4)cycle
        if (d ==4)then  
  