anchor.diff:      type(hecmwST_local_mesh), intent(in) :: hecMESH
       integer(kind=kint), intent(in) :: sym
       integer(kind=kint) :: ierr
  +    integer(kind=kint), save :: n_recycle = 0
       if (INITIALIZED) then
         if (hecMAT%Iarray(98) == 1) then ! need symbolic and numerical setup
           call hecmw_precond_ML_33_clear()
         else if (hecMAT%Iarray(97) == 1) then ! need numerical setup only
  -        call hecmw_precond_ML_33_clear()
  +        if (n_recycle < MAX_RECYCLE_SETUP) then
  +          n_recycle = n_recycle + 1
  +          return
  +        else
  +          call hecmw_precond_ML_33_clear()
  +        endif
         else
           return
         endif
  
positive.code: 
    logical, save :: INITIALIZED = .false.
  
  contains
  
    subroutine hecmw_precond_ML_33_setup(hecMAT, hecMESH, sym)
  
negative.code:     INITIALIZED = .true.
      hecMAT%Iarray(98) = 0 ! symbolic setup done
      hecMAT%Iarray(97) = 0 ! numerical setup done
      n_recycle = 0
    end subroutine hecmw_precond_ML_33_setup
  
    subroutine hecmw_precond_ML_33_apply(WW)
  