Object cordinates changing when game start

Guys I have a problem with my code. For example a object stay at 0,2,0(or something else) cordinates. and I move the script into the object. When game playing object go to 0,0,0 cordinates. I dont want to change the cordinates of my object when game start. How can i fix it. Here is my code

     using UnityEngine;
     using System.Collections;
     using UnityEngine.UI;

      public class MovementRD : MonoBehaviour {

      public Button btnRight;

     public Button btnDown;

    public Text stepText;
   //public GUIText stepText;
  public static int step;
   float lerpTime;
  float currentLerpTime;
  float perc = 1;

   Vector3 startPos;
   Vector3 endPos;


    void Start()
    {
    btnDown = btnDown.GetComponent<Button> ();

    btnRight = btnRight.GetComponent<Button> ();


    //transform.rotation = Quaternion.Euler(0,0,0);

    }


    void Update () 
    {


    if ( Input.GetButtonDown("down")||Input.GetButtonDown("right"))
    { 
    if(perc == 1)
    {
    lerpTime =1;
    currentLerpTime=0;

    }

    }

    if (Input.GetButtonDown ("right") && gameObject.transform.position == endPos) {
    RightAction();
    }








    if (Input.GetButtonDown ("down") && gameObject.transform.position == endPos) {
    DownAction();


    }


    currentLerpTime += Time.deltaTime * 5.5F;
    perc = currentLerpTime / lerpTime;
    gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);




    }

    /*
    void OnCollisionEnter(Collision coll) {
    if (coll.gameObject.tag == "dom") {


    GetComponent<Rigidbody> ().constraints = RigidbodyConstraints.None;




    }



    }
   */
    public void DownAction()
    {
    stepText.text = "STEP: " + step;
    startPos = gameObject.transform.position;

    endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z -1);

    step++;
    if (gameObject.transform.rotation == Quaternion.Euler (90,0,0))
    {
    transform.rotation = Quaternion.Euler (0,0,0);

    }
    else if(gameObject.transform.rotation == Quaternion.Euler (0,0,0))

    {
    transform.rotation = Quaternion.Euler (90,0,0);


    }

    }

    public void UpAction()
    {
    stepText.text = "STEP: " + step;
    startPos = gameObject.transform.position;

    endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z +1);

    step++;
    if (gameObject.transform.rotation == Quaternion.Euler (90,0,0))
    {
    transform.rotation = Quaternion.Euler (0,0,0);

    }
    else if(gameObject.transform.rotation == Quaternion.Euler (0,0,0))

    {
    transform.rotation = Quaternion.Euler (90,0,0);

    }


    }

    public void LeftAction()
    {

    stepText.text = "STEP: " + step;
    startPos = gameObject.transform.position;
   endPos = new Vector3(transform.position.x - 1, transform.position.y, transform.position.z);

    step++;

    if (gameObject.transform.rotation == Quaternion.Euler (0,0,90))
    {
    transform.rotation = Quaternion.Euler (0,0,0);

    }
    else if(gameObject.transform.rotation == Quaternion.Euler (0,0,0))

    {
    transform.rotation = Quaternion.Euler (0,0,90);

    }
    }

    public void RightAction()

    {

    stepText.text = "STEP: " + step;
    startPos = gameObject.transform.position;

    endPos = new Vector3(transform.position.x + 1, transform.position.y, transform.position.z);

    step++;
    if (gameObject.transform.rotation == Quaternion.Euler (0,0,90))
    {
    transform.rotation = Quaternion.Euler (0,0,0);


    }
    else if(gameObject.transform.rotation == Quaternion.Euler (0,0,0))

    {
    transform.rotation = Quaternion.Euler (0,0,90);

    }


    } 



   }

Hello!

As I can see you have line #69:

gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);

This line is performed every Update; at start of your script startPos == (0,0,0) and endPos == (0,0,0). So at the first Update() your object moves to (0,0,0) due to this line.