Lerp Between Angles

I’m doing a little gravity test, and I want the character to rotate smoothly. To do that, I wrote this:

var newangle = 0;

function OnGUI () {
	if (GUILayout.Button("Reverse Gravity")) {
		Physics.gravity = Vector3(0, 20.0, 0);
		newangle = Mathf.LerpAngle(transform.eulerAngles.z, 180, 1);
		transform.eulerAngles = Vector3(transform.eulerAngles.x, transform.eulerAngles.y, newangle);
		rigidbody.WakeUp ();
	}
	if (GUILayout.Button("Normal Gravity")) {
		Physics.gravity = Vector3(0, -20.0, 0);
		newangle = Mathf.LerpAngle(transform.eulerAngles.z, 0, 1);
		transform.eulerAngles = Vector3(transform.eulerAngles.x, transform.eulerAngles.y, newangle);
		rigidbody.WakeUp ();
	}
}

But he doesn’t smoothly rotate. He just snaps between rotations. That’s not the definition of Lerping that the docs give, so what is it really?

the last parameter is time a number between 0.0, 1.0.
t is not been updated
try incrementing time e.g 0.1, 0.2, 0.3 etc

LerpAngle(transform.eulerAngles.z, 0, t);