anchor.diff:      ntotal = numnp*ndof
   
       !*Allocations
  -    allocate (val(NDEg*NDEg),stat=ierr)
  +    allocate (val(FCT%NDEg*FCT%NDEg),stat=ierr)
       if ( ierr/=0 ) stop "Allocation error:val"
  -    if ( IDBg_num/= 0 ) write (6,*) "nuform:stage = ", STAge
  +    if ( IDBg_num/= 0 ) write (6,*) "nuform:stage = ", FCT%STAge
       kk = 0
       ndof2 = ndof*ndof
   
  
positive.code:         !
          !   build up xlnzr,colno  (this is the symbolic fct.)
          !
          allocate (XLNzr(NEQns+1),stat=IERror)
          if ( IERror/=0 ) stop "ALLOCATION ERROR, xlnzr: SUB. matini.f"
          call PRE_GNCLNO(PARent,XLEaf,LEAf,XLNzr,NEQns,NSTop,lncol,ir1)
          allocate (COLno(lncol),stat=IERror)
          if ( IERror/=0 ) stop "ALLOCATION ERROR, colno: SUB. matini.f"
          call GNCLNO(PARent,XLEaf,LEAf,XLNzr,COLno,NEQns,NSTop,lncol,ir1)
          !*Deallocate work arrays
          deallocate (PORdr)
          deallocate (ADJncp)
          deallocate (XLEaf)
          deallocate (LEAf)
          deallocate (BTRee)
          LEN_dsln = (NEQns-NSTop+1)*(NEQns-NSTop)/2
  
          !Scalar assignments
          LEN_colno = lncol
  
          STAge = 10
          IALoc = 5*NEQns + lncol + 1
          exit
        else
          if ( izz0==0 ) izz0 = izz
          if ( izz0/=izz ) then
            call BRINGU(ZPIv,IPErm,INVp,MARker,izz,NEQns,IRR)
          else
            call ROTATE(IA,JA,INVp,IPErm,MARker,BTRee,izz,NEQns,NBRhd,QSIze,IRR)
          endif
        endif
      enddo
  
negative.code:       !*Diagonal
        kk = kk + 1
        call VLCPY(val,hecMAT%D(ndof2*(j-1)+1:ndof2*j),ndof)
        call STAIJ1(0,j,j,val,FCT%NEQns,FCT%NDEg,FCT%LEN_colno,FCT%NSTop,FCT%LEN_dsln,FCT%INVp,FCT%XLNzr,FCT%COLno,&
             FCT%DIAg,FCT%ZLN,FCT%DSLn,FCT%RALoc,FCT%STAge,Ir)
  
        do i = 1, ndof
          if ( val((i-1)*ndof+i)<=0 ) write (idbg,*) 'j,j,val:', j, i, val((i-1)*ndof+i)
  