anchor.diff:  
     !======================================================================!
     !> @brief NUFORM
  -  !======================================================================!
  -  subroutine NUFORM(hecMESH,hecMAT,NEQns,NDEg,LEN_colno,NSTop,LEN_dsln,INVp,XLNzr,COLno,DIAg,ZLN,DSLn,RALoc,STAge,Ir)
  +  !  sets DIAg, ZLN, DSLn
  +  !  updates RALoc, STAge
  +  !======================================================================!
  +  subroutine NUFORM(hecMESH,hecMAT,FCT,Ir)
       implicit none
       !------
       type (HECMWST_LOCAL_MESH), intent(in)::hecMESH
       type (HECMWST_MATRIX), intent(in)::hecMAT
  -    integer(kind=kint), intent(in):: NEQns
  -    integer(kind=kint), intent(in):: NDEg
  -    integer(kind=kint), intent(in):: LEN_colno
  -    integer(kind=kint), intent(in):: NSTop
  -    integer(kind=kint), intent(in):: LEN_dsln
  -    integer(kind=kint), intent(in):: INVp(:)
  -    integer(kind=kint), intent(in):: XLNzr(:)
  -    integer(kind=kint), intent(in):: COLno(:)
  -    real(kind=kreal), pointer :: DIAg(:)
  -    real(kind=kreal), pointer :: ZLN(:)
  -    real(kind=kreal), pointer :: DSLn(:)
  -    integer(kind=kint), intent(inout):: RALoc
  -    integer(kind=kint), intent(inout):: STAge
  +    type (cholesky_factor), intent(inout):: FCT
       integer(kind=kint), intent(out):: Ir
       !------
       integer(kind=kint):: i
  
positive.code:     Ir = 0
  
      !*Initialize allocation measure variables
      IALoc = 0
      RALoc = 0
      !
      !  set z pivot
      !
      allocate (ZPIv(NEQns),stat=IERror)
      if ( IERror/=0 ) stop "ALLOCATION ERROR, zpiv: SUB. matini"
      call ZPIVOT(NEQns,neqnsz,NTTbr,JCOl,IROw,ZPIv,ir1)
      if ( ir1/=0 ) then
        Ir = ir1
        return
  
negative.code:     integer(kind=kint), allocatable :: INDx(:)
      real(kind=kreal), allocatable :: TEMp(:)
  
      if ( FCT%STAge/=20 ) then
        print *, '*********Setting Stage 40!*********'
        Ir = 40
        return
  