Rotating the weapon back using Quaternion.Lerp

Hello everyone. I want to rotate my gun to left & right when player moves to left & right. So I made a code like this :

 var from : Transform; // a gameObject for start
    var to1 : Transform; // a gameObject which is for left limit of rotating ( 0,0,1.5)
    var to2 : Transform; // a gameObject which is for right limit of rotating ( 0,0,-1.5)
    var orig : Transform; // a gameObject which has the original rotations of gun(0,0,0)
    var current : Transform: // a gameObject for the weapons current rotation
    var speed = 0.1;
    private var rotateLevel : int =0; // a value to stop rotating left
    private var rotateLevel2 : int =0; // a value to stop rotating right

function Update(){
    if(Input.GetKey("a")){
    if(rotateLevel<40){
    rotateLevel+=1;
    rotateLevel2-=1;
     transform.rotation =
          Quaternion.Lerp (from.rotation, to1.rotation, Time.deltaTime * speed);
          }
    }
    else if(Input.GetKey("d")){
    if(rotateLevel2<40){
    rotateLevel-=1;
    rotateLevel2+=1;
     transform.rotation =
          Quaternion.Lerp (from.rotation, to2.rotation, Time.deltaTime * speed);
          }
    }
    
    
    else{
    
  ?????
    }

}

This works well, it moves smoothly & good according to the variables that I adjusted. But when I stop walking, it stays in the position which it was at. So all the aiming and other things get messed up. I need to turn the gun back to it’s original rotation smoothly. For that, I made a code like that but didn’t work :

else{

 transform.rotation =
      Quaternion.Lerp (current.rotation , orig.rotation, Time.deltaTime *speed);
}

but as I said it did not work. I need help, any ideas ? Thanks =)

Try

transform.rotation = Quaternion.Lerp( transform.rotation , from.rotation, Time.deltaTime *speed);

I’m not sure of what is the diff between from and orig though.