AddTorque Isn't Working?

My problem is that for some reason it stops rotating after a while when it’s going forwards instead of carrying on rotating. Also even when im going backwards I never get “Backwards” in be console.

Heres my script

#pragma strict

var speed : float = 1;
var backward : float = 1;
var rotationRight : float = 1;
var rotationLeft : float = 1;
var startingSpeed : float = 5;
var spin : float = 10;
var maxSpeed : float = 50;
var speedDifference : float = 5;
var currentSpeed : float = 0;
var brake : float = 10;

function Start () {


	rigidbody2D.AddForce (Vector2(0, -startingSpeed * 0.5));
		


}

function Update () {
currentSpeed = rigidbody2D.velocity.magnitude;

speedDifference = maxSpeed - currentSpeed;

	


	if (currentSpeed > maxSpeed) {
	
		rigidbody2D.AddForce (Vector2(speedDifference, 0));
		
		}
		
		if (currentSpeed < maxSpeed) {
		
			rigidbody2D.AddForce (Vector2(speed, 0));
		
		}

		if (Input.GetMouseButton(0)) {
		
			rigidbody2D.AddForce (Vector2(brake, 0));
			
			}
			
			if (currentSpeed < 0) {
			
			Debug.Log ("Backwards");
				rigidbody2D.AddTorque (-spin, 0);
			
			}
			if (currentSpeed > 0) {
			
			Debug.Log ("Forwards");
				rigidbody2D.AddTorque (spin, 0);
			
			}
		}

Thanks in advance

Also sorry if this is a newby mistake or there were other questions answering this. I looked and couldn’t find any

NOTE: I would like answers to be in JS (javaScipt, unityscript whatever you want to call it) because this game is being made purely for learn JS so doing it in C# or boo isn’t going to help

What is the Angular Drag setting on your rigidbody? The higher this is the more the spin will slow down(even in mid air).

Also you set the currentSpeed var to the magnitude of the velocity, AFAIK the magnitude is always a positive value. So currentSpeed will never be less than 0, so you will never get the “Backwards” effect.