waypoint AI car slower speed areas, apply breaking

Unity is the best! Thank You for this amazing product. I need to cause AI Waypoint Cars to slow down in certain areas. I managed to do this, but not in a good way. My method is not comfortable for the user; it causes the AI Waypoint car to immediately drive at the slower speed; would be far better if I could get the Car to break, to slow down to the slower speed.

I edited the CARCONTROLLER.CS added two variables, one for the radius and one for the slow speed value. And I edited the CAPSPEED function …

float iTopSpeed = m_Topspeed;
float dist1 = Math.Abs(Vector3.Distance(transform.position, slowzone));
if (dist1 < slowradius)
    iTopSpeed = slowto;
// //
float speed = m_Rigidbody.velocity.magnitude;
switch (m_SpeedType)
    case SpeedType.MPH:
        speed *= 2.23693629f;
        if (speed > iTopSpeed)
            m_Rigidbody.velocity = (iTopSpeed / 2.23693629f) * m_Rigidbody.velocity.normalized;
    case SpeedType.KPH:
        speed *= 3.6f;
        if (speed > iTopSpeed)
            m_Rigidbody.velocity = (iTopSpeed / 3.6f) * m_Rigidbody.velocity.normalized;

The unity asset Ai Car Controller code is flawed. Vector3 returns angles in degrees whereas Rigidbody.angularvelocity.magnitude returns angular velocity in radians/sec. Simply multiply Rigidbody.angularvelocity.magnitude by Mathf.Rad2Deg (i.e. Mathf.PI/180) and use a cautious angular velocity factor > 1 (I use 2) and it should work.