Rigid body speed control

I’m working on a RTS space game, where everything is move by rigid body on the z axis using relative force what have been trying to do is to get the ship to slow down and stop what they come close to the point i want to be at. but so far they keep over shooting their target points. is there a better way to control their speed than what I have below?

  else if (orbitTarget == false && moveToPosition == true)
    {
        //Debug.Log("inside speed contorl: move here");
        targetVelocity = moveHere - transform.position;
        if (distance > 100 + distanceFromCenterZ)
        {
            Debug.Log("inside speed contorl: move here, too far");
            rigidbody.drag = 1;
            if (curSpeed < maxSpeed)
            {
                movementForce += adjustingForce;
            }
            else if (curSpeed > maxSpeed)
            {
                movementForce += -adjustingForce;
            }
            rigidbody.AddRelativeForce(0, 0, movementForce);
        }
        else if (distance < 100 + distanceFromCenterZ && distance > 50 + distanceFromCenterZ)
        {
            Debug.Log("inside speed contorl: move here,getting close");
            if(distance > 0 && curSpeed > 5)
                opposingForce += -adjustingForce;
            rigidbody.AddRelativeForce(0, 0, opposingForce);
        }
    }

You’re trying to solve this by application of forces - it would be much simpler to do it with impulses (Unity - Scripting API: ForceMode.Impulse), which removes the time factor.

However, there’s an even easier way to do it: just set the velocity directly. With rigidbodies, you can both apply forces and just set rigidbody.velocity directly. If you want 100% control over the rigidbody’s movement, this is a perfectly acceptable way to do it.