anchor.diff:            calcJacobian = .FALSE.
         END IF
         
  -      !IF ( p_FAST%CompHydro .OR. p_FAST%CompSub ) THEN
  +      !IF ( p_FAST%CompHydro ) THEN
         !
         !   IF ( .NOT. p_FAST%CompSub ) THEN
         !   
         !      CALL ED_HD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
  -      !                                 , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
  -      !                                 , HD_Input(1), p_HD, x_HD_this, xd_HD_this, z_HD_this, OtherSt_HD, y_HD & 
  -      !                                 , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
  +      !                                    , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
  +      !                                    , HD_Input(1), p_HD, x_HD_this, xd_HD_this, z_HD_this, OtherSt_HD, y_HD & 
  +      !                                    , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
         !         CALL CheckError( ErrStat, ErrMsg  )
         !      
  -      !   ELSEIF ( .NOT. p_FAST%CompHydro ) THEN
  +      !   ELSE ! Both enabled
  +      !      
  +      !      
  +      !      
  +      !   END IF      
         !   
  -      !      CALL ED_SD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
  -      !                                 , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
  -      !                                 , SD_Input(1), p_SD, x_SD_this, xd_SD_this, z_SD_this, OtherSt_SD, y_SD & 
  -      !                                 , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
  -      !         CALL CheckError( ErrStat, ErrMsg  )
  +      !ELSEIF ( p_FAST%CompSub ) THEN
  +      !   
  +      !   CALL ED_SD_InputOutputSolve(  this_time, p_FAST, calcJacobian &
  +      !                              , ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1) &
  +      !                              , SD_Input(1), p_SD, x_SD_this, xd_SD_this, z_SD_this, OtherSt_SD, y_SD & 
  +      !                              , u_ED_Without_SD_HD, MeshMapData , ErrStat, ErrMsg )         
  +      !      CALL CheckError( ErrStat, ErrMsg  )
         !
  -      !            
  -      !   ELSE ! Both enabled... (not currently allowed)
  -      !   END IF      
  -      !ELSE
  +      !ELSE ! no HD or SD coupled to ED
            
            CALL ED_CalcOutput( this_time, ED_Input(1), p_ED, x_ED_this, xd_ED_this, z_ED_this, OtherSt_ED, ED_Output(1), ErrStat, ErrMsg )
               CALL CheckError( ErrStat, 'Message from ED_CalcOutput: '//NewLine//ErrMsg  )    
  
positive.code: 
           END IF
  
        ELSE ! these get mapped to SubDyn
  
              ! HydroDyn Morison point mesh to SubDyn point mesh
              ! HydroDyn Morison line mesh to SubDyn point mesh
  
        END IF ! HydroDyn-SubDyn
        
     END IF !HydroDyn-{ElastoDyn or SubDyn}
  
negative.code:          CALL SD_InputSolve( SD_Input(1), ED_Output(1), y_HD, MeshMapData, ErrStat, ErrMsg )
              CALL CheckError( ErrStat, 'Message from SD_InputSolve: '//NewLine//ErrMsg  )
  
           !CALL SD_CalcOutput( this_time, SD_Input(1), p_SD, x_SD_this, xd_SD_this, z_SD_this, OtherSt_SD, y_SD, ErrStat, ErrMsg )
           !   CALL CheckError( ErrStat, 'Message from SD_CalcOutput: '//NewLine//ErrMsg  )
                          
        END IF
        
  