hinge joints and velocity

So I have an oriental dragon based on hinge joints. The tail and the head are Kinematic. The rest isn’t. When I pause the game I use the function below to switch the other hinge joints to kinematic, that way they don’t all around.

This all works great until I unpause the game and set the rigidbodies back to being non kinematic. At this point the velocity of the dragon seem to double. I’ve checked and constrained transforms, but can’t figure it out.

Any help would be greatly appreciated.

Transform SetActiveOnHingeJoints(Transform current,bool abool)
{	
	if(current.rigidbody !=null && current.name!="Head" && current.name!="Tail")
	{
		if(abool)
		{
			current.rigidbody.isKinematic			=!abool;
            current.rigidbody.velocity 				= new Vector3(0,0,0);
            current.rigidbody.angularVelocity 		= new Vector3(0,0,0);
		}
		else
		{
			current.rigidbody.isKinematic			=!abool;
		}
	}

	// search through child bones for the bone we're looking for

    for (int i = 0; i < current.GetChildCount(); ++i)
	{
		Transform found 						= SetActiveOnHingeJoints(current.GetChild(i), abool);
		if (found != null)
			return found;			
	}
	return null;
}

You shouldn’t need to set them to kinematic on pausing the game. Instead set Time.timeScale to 0 - then reset it to 1 when the user unpauses.