anchor.diff:    integer(kind=kint), pointer :: COLORindex(:) => null()
     integer(kind=kint), pointer :: perm(:) => null()
     integer(kind=kint), pointer :: iperm(:) => null()
  +
  +  logical, save :: isFirst = .true.
   
   contains
   
  
positive.code:     real(kind=kreal) :: SW1, SW2, SW3, X1, X2, X3
  
      ! added for turning >>>
      logical, save :: isFirst = .true.
      integer(kind=kint), parameter :: numOfBlockPerThread = 100
      integer(kind=kint), save :: numOfThread = 1, numOfBlock
      integer(kind=kint), save, allocatable :: icToBlockIndex(:)
  
negative.code:     if (isFirst .eqv. .true.) then
        !$ numOfThread = omp_get_max_threads()
        numOfBlock = numOfThread * numOfBlockPerThread
        if (allocated(icToBlockIndex)) deallocate(icToBlockIndex)
        if (allocated(blockIndexToColorIndex)) deallocate(blockIndexToColorIndex)
        allocate (icToBlockIndex(0:NColor), &
             blockIndexToColorIndex(0:numOfBlock + NColor))
        numOfElement = N + indexL(N) + indexU(N)
  