reset an objects rotation z to start pose

I modified the prefab standard car controller to become a boat. works really well after tweaking some stuff. one such tweak was adding a script so that when the boat turns it banks slightly into the turn. The bank is determined by the mouse x axis. It works pretty well but sometimes ( I guess i lifted the mouse up or something) it remains a little banked to one side even though I am going straight and I am trying to figure out how to get it back to it’s default rotation of 0. I 've tried storing this value and returning to it upon mouse inactivity bu with pretty inconsistent results

using UnityEngine;
using System.Collections;

public class boatBank : MonoBehaviour {

public float speed = 8f;
void Start () {

}

void Update () {
	transform.Rotate(0, 0, -(Input.GetAxis("Mouse X")) * Time.deltaTime * speed );

	}
	}

for now I added something I found that does put it back to the default position but it does so with a snap instead of a stepping . tried plugging in all sorts of numbers hi and low but nothing changes. What’s wrong with this code
? ANybody?

using UnityEngine;
using System.Collections;

public class boatBank : MonoBehaviour {

	public float speed = 8f;
	public Transform target;
	public float speedZ;

	void Start () {

	}


	void Update () {
		if (Input.GetKey(KeyCode.W)) 
		{
		transform.Rotate(0, 0, -(Input.GetAxis("Mouse X")) * Time.deltaTime * speedZ );
		}
	
		else 

	{
		Vector3 targetDir = target.position - transform.position;
		float step = speed * Time.deltaTime;
		Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, step, 0.0F);
		transform.rotation = Quaternion.LookRotation(newDir);



		}
		}
	}