player lean - doesn't get back to previous position

Hey there!
I’m trying to make a script, when player holds q button, i move him a little bit and rotate camera (z axis). However, script works, but when i’m holding q, and rotate player for example, 180 degrees, player doesn’t get back to start position, but rotates even more. Here’s my code:

if(Input.GetButton("LeanLeft")) {
	isLeaning = true;
	   	   	
	if(currentLean < leanSize) {
    	transform.Translate(leanSpeed * Time.deltaTime, 0, 0);
    	if(leanSize > 0.6) {
    		transform.Rotate(0, 0, leanSpeed * Time.deltaTime * -1 * leanAngle);
    	}
    	currentLean += leanSpeed * Time.deltaTime;
	}
}

if(Input.GetButtonUp("LeanLeft")) {
	isLeaning = false;
}

if(currentLean > 0.01 && (!isLeaning)) {
	transform.Translate(leanSpeed * Time.deltaTime * -1, 0, 0);
	transform.Rotate(0, 0, leanSpeed * Time.deltaTime * 1 * leanAngle);
	currentLean -= leanSpeed * Time.deltaTime;
}

Here is result, what happens if i rotate 180 degrees when leaning:

585-bug.png

Thank you for your time!

Nevermind, i fixed that bug when using animation.