anchor.diff:        integer(IntKi) :: iNode
         integer(IntKi) :: ia ! Index on rigid link assembly
         integer(IntKi) :: m  ! Number of elements connected to a joint
  +      integer(IntKi) :: NodeType
         nDOF_ConstraintReduced = 0
   
         ! Rigid assemblies contribution
  
positive.code:       integer(IntKi) :: nDOF
        integer(IntKi) :: aID, ia ! assembly ID, and index in IRA
        integer(IntKi) :: iNode
        integer(IntKi) :: I
        integer(IntKi) :: nc !< Number of DOF after constraints applied
        integer(IntKi) :: nj
  
        ! --- Misc inits
        nullify(IDOFNew)
  
negative.code:       ! Contribution from all the other joints
        do iNode = 1, Init%NNode
           m = Init%NodesConnE(iNode,1) ! Col1: number of elements connected to this joint
           NodeType = Init%Nodes(iNode,iJointType)
  
           if    (NodeType == idJointPin ) then
              nDOF_ConstraintReduced = nDOF_ConstraintReduced + 5 + 1*m
              print*,'Node',iNode, 'is a pin joint, number of members involved: ', m
  
           elseif(NodeType == idJointUniversal ) then
              nDOF_ConstraintReduced = nDOF_ConstraintReduced + 4 + 2*m
              print*,'Node',iNode, 'is an universal joint, number of members involved: ', m
  
           elseif(NodeType == idJointBall ) then
              nDOF_ConstraintReduced = nDOF_ConstraintReduced + 3 + 3*m
              print*,'Node',iNode, 'is a ball joint, number of members involved: ', m
  
           elseif(NodeType == idJointCantilever ) then
              if ( NodeHasRigidElem(iNode, Init, p)) then
                 ! This joint is involved in a rigid link assembly, we skip it (accounted for above)
                 print*,'Node',iNode, 'is involved in a RA'
  