"Charge" shot script help

Im trying to make it, so when the user clicks and holds the mouse button down, the attack gets stronger over time. Currently that part of this script works fine, my problem is that the “chargeDamage” and “speed” variables, seem to grow exponentially rather than over a steady rate of time. And it doesn’t seem to reset back to 0 as desired. Any help appreciated.

Heres the script

var projectile : Rigidbody;
var speed = 0;
var fireRate = 0.5;
private var nextFire = 0.0;
var chargeDamage = 0;
var chargeRate = 0.5;
var charging = 0;
function Update() 
{

if (Input.GetMouseButtonDown(0))
{
	charging = 1;
	chargeDamage = 0;
	speed = 0;
	animation.Play ("DrawBow");
	Debug.Log("Charging is True!");
}

//Begin adding to ChargeDamage
if (charging==1)
{
	chargeDamage = (chargeDamage + (chargeRate * Time.time));
	speed = chargeDamage;
	print("The variable is :"+speed);
}

if (Input.GetMouseButtonUp(0))
{
	//Fire Code Here, Reset Charge to 0
	if (Time.time > nextFire)
	var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position, transform.rotation);
		instantiatedProjectile.velocity = transform.TransformDirection( Vector3(0, 0, speed) );
		Physics.IgnoreCollision( instantiatedProjectile.collider, transform.root.collider );
        nextFire = Time.time + fireRate;
		Debug.Log("Fired, Charge Reset!");
		chargeDamage = 0;
		charging =0;
		speed = 0;
}
}

You need to use Time.deltaTime instead of Time.time on this line:

chargeDamage = (chargeDamage + (chargeRate * Time.time));

I recommend to use this shortcut to make the code more readable:

chargeDamage += chargeRate * Time.deltaTime;