Need help with rotation script.

HI,this is script what i wrote,but i wasn’t expecting that its gonna work soo wrong.
Well problem is : when i press “n” key the map rotates wrong, it rotates like “up” by 90 degrees,but what i want is,i want that map rotates around its axis (90 degrees). Around its axis basically. And also can anyone modify script correctly,that when i press again “n” button,map rotates back to its position ( - 90 degreess (back)),thanks for attention,i hope you understand me.

Here is the script:

var map : Transform;
var rotateSpeed : float;
private var mapRotation : float;

function Update()
{
if(Input.GetKeyDown("n"))
{
mapRotation -= 90;
}
map.rotation.x = Mathf.Lerp(map.rotation.x, mapRotation, rotateSpeed);
}

This line is wrong,or all script?

map.rotation.x = Mathf.Lerp(map.rotation.x, mapRotation, rotateSpeed);

try doing it without (s)Lerping first, then it should look something like this:

var map : Transform;
var rotateSpeed : float;
private var mapRotation : float;
 
function Update()
{
   if(Input.GetKeyDown("n"))
   {
     mapRotation -= 90;
   }
   map.rotation = Quaternion.Euler(map.eulerAngles.x, mapRotation, map.eulerAngles.z);
}

Ten the easiest way to continue make this smoother instead of choppy, is to learn how to use iTween, a free tweening/smoothing library for Unity.