Applying lerp to MouseOrbit

I’m trying to add lerp to the MouseOrbit script that is shipped with Unity. I want to make it so when the mouse button is released the camera progressively returns to a stand still rather than just stopping as soon as the mouse button is released. So far I have managed to make the Speed value lerp as I can see it return to 0 over the given time in the inspector but there is no visible effect in game. I’m assuming there is a conflict between the Speed, Lerp and how the x/y values are mapped to the mouse axis.

Here is my code;

var target : Transform;
var distance = 10.0;
var lerpSpeed = 5.0;
var Speed = 250.0;
//var ySpeed = 120.0;

var yMinLimit = -20;
var yMaxLimit = 80;

private var x = 0.0;
private var y = 0.0;
private var avgSpeed = new Vector3();
private var dragging = false;

@script AddComponentMenu("Camera-Control/Mouse Orbit")

function Start () {

    var angles = transform.eulerAngles;
    x = angles.y;
    y = angles.x;

	// Make the rigid body not change rotation
   	if (rigidbody)
		rigidbody.freezeRotation = true;
}

function Update(){
	if(Input.GetButton ("Fire1"))dragging = true;
	
	if(!dragging){
	        var i = Time.deltaTime * lerpSpeed;
        	Speed = Mathf.Lerp(Speed, 0, i);
	}
}

function LateUpdate () {
    if (target&&Input.GetButton ("Fire1")&&dragging){
    
    	Speed = 250.00;
    
        x += Input.GetAxis("Mouse X") * Speed * 0.02;
        y -= Input.GetAxis("Mouse Y") * Speed * 0.02;
 		
 		y = ClampAngle(y, yMinLimit, yMaxLimit);
 		

        var rotation = Quaternion.Euler(y, x, 0);
        var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
        
        transform.rotation = rotation;
        transform.position = position;
    }else{
        dragging = false;
        }
}

static function ClampAngle (angle : float, min : float, max : float) {
	if (angle < -360)
		angle += 360;
	if (angle > 360)
		angle -= 360;
	return Mathf.Clamp (angle, min, max);
}

Any help is greatly appreciated.

using UnityEngine;
using UnityEngine;
using System.Collections;

//[AddComponentMenu(“Camera-Control/Mouse drag Orbit with zoom”)]
public class rotateonmouse : MonoBehaviour
{
public Transform target;
public float distance = 5.0f;
public float xSpeed = 120.0f;
public float ySpeed = 120.0f;

 public float yMinLimit = -20f;
 public float yMaxLimit = 80f;

 public float distanceMin = .5f;
 public float distanceMax = 15f;

 public float smoothTime = 2f;

 float rotationYAxis = 0.0f;
 float rotationXAxis = 0.0f;

 float velocityX = 0.0f;
 float velocityY = 0.0f;

 // Use this for initialization
 void Start()
 {
     Vector3 angles = transform.eulerAngles;
     rotationYAxis = angles.y;
     rotationXAxis = angles.x;

     // Make the rigid body not change rotation
     if (rigidbody)
     {
         rigidbody.freezeRotation = true;
     }
 }

 void LateUpdate()
 {
     if (target)
     {
         if (Input.GetMouseButton(1))
         {
             velocityX += xSpeed * Input.GetAxis("Mouse X") * 0.02f;
             velocityY += ySpeed * Input.GetAxis("Mouse Y") * 0.02f;
         }

         rotationYAxis += velocityX;
         rotationXAxis -= velocityY;

         rotationXAxis = ClampAngle(rotationXAxis, yMinLimit, yMaxLimit);

         Quaternion fromRotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, 0);
         Quaternion toRotation = Quaternion.Euler(rotationXAxis, rotationYAxis, 0);
         Quaternion rotation = toRotation;
         
         

        
         Vector3 negDistance = new Vector3(0.0f, 0.0f, -distance);
         Vector3 position = rotation * negDistance + target.position;
         
         transform.rotation = rotation;
         transform.position = position;

         velocityX = Mathf.Lerp(velocityX, 0, Time.deltaTime * smoothTime);
         velocityY = Mathf.Lerp(velocityY, 0, Time.deltaTime * smoothTime);
     }

 }

 public static float ClampAngle(float angle, float min, float max)
 {
     if (angle < -360F)
         angle += 360F;
     if (angle > 360F)
         angle -= 360F;
     return Mathf.Clamp(angle, min, max);
 }

}

this should do it