anchor.diff:  
       write(0,*) 'DEBUG: made hecMATLag', hecmw_wtime()-t1
   
  +    do i = 1, hecMESH%import_index(hecMESH%n_neighbor_pe)
  +      hecMESH%import_item(i) = hecMESH%import_item(i) + nb_lag
  +    enddo
  +
       call hecmw_solve_33(hecMESH, hecMATLag)
   
  -    do i = 1, hecMAT%N*ndof+fstrMAT%num_lagrange
  +    do i = 1, hecMESH%import_index(hecMESH%n_neighbor_pe)
  +      hecMESH%import_item(i) = hecMESH%import_item(i) - nb_lag
  +    enddo
  +
  +    hecMAT%X = 0.d0
  +    do i = 1, hecMAT%N*ndof
         hecMAT%X(i) = hecMATLag%X(i)
  +    enddo
  +    do i = hecMAT%N*ndof+1, hecMAT%NP*ndof
  +      hecMAT%X(i) = hecMATLag%X(i + nb_lag)
  +    enddo
  +    do i = 1, fstrMAT%num_lagrange
  +      hecMAT%X(hecMAT%NP*ndof + i) = hecMATLag%X(hecMAT%N*ndof + i)
       enddo
   
       call hecmw_mat_finalize(hecMATLag)
  
positive.code: 
      deallocate(iwUr, iwUc, iwLr, iwLc)
  
      allocate(hecMATLag%D(hecMATLag%N*ndof2))
      hecMATLag%D = 0.d0
      do i = 1, hecMAT%N*ndof2
        hecMATLag%D(i) = hecMAT%D(i)
      enddo
      do idof = ndof - ndofextra + 1, ndof
        hecMATLag%D((hecMATLag%N-1)*ndof2 + (idof-1)*ndof + idof) = 1.0
      enddo
  
      allocate(hecMATLag%B(hecMATLag%N*ndof))
      allocate(hecMATLag%X(hecMATLag%N*ndof))
      hecMATLag%B = 0.d0
      hecMATLag%X = 0.d0
  
      do i = 1, hecMAT%N*ndof+fstrMAT%num_lagrange
        hecMATLag%B(i) = hecMAT%B(i)
      enddo
  
      hecMATLag%Iarray=hecMAT%Iarray
  
negative.code:         jb_lag = (j+2)/3
          iwUc(jb_lag) = 1
        enddo
        idx_lag_s = idx
        do j=1,nb_lag
          if (iwUc(j) > 0) then
            hecMATLag%itemU(idx) = hecMAT%N + j
            idx = idx + 1
          endif
        enddo
        idx_lag_e = idx - 1
        ! Lag. AU
        ls=fstrMAT%indexU_lagrange(i-1)+1
        le=fstrMAT%indexU_lagrange(i)
  