Raycast an object and move it

Hi all, I got a FPS controller with camera as a child, this camera shoot a ray searching objects, in fact, one object, a cube, when the ray hits this cube I move it to other position(x2,y2,z2) (while ray keep hitting it), when the ray is no hit the cube, this should be return to initial position (x1,y1,z1). My problem is return the object when it is not hit by ray. this is the code I use:

public class FPS_raycast : MonoBehaviour {

Camera camera_;                                                     
public Collider CubeCollider = new Collider();              
Vector3 CubeFinishPosition = new Vector3(43f,1.5f,17f);           
Vector3 CubeInitPosition = new Vector3 (43f, 1.5f, 13.5f);
GameObject CubeGameObject;
float step;                                                       
public float speed;                                               
bool hitting = true;
float var = 0f;

    void Start()
    {
        camera_ = GetComponent<Camera> ();
    }

    void Update ()
    {
        step = speed * Time.deltaTime;
      
        Ray ray = camera_.ViewportPointToRay(new Vector3(0.5f,0.5f,0));      
        Debug.DrawRay (ray.origin, ray.direction * 10, Color.blue);          

        RaycastHit hit;

        if (Physics.Raycast (ray, out hit) == true)
            {
                hitting = true;
                CubeCollider = hit.collider;
                CubeGameObject = hit.transform.gameObject;
              
                if (CubeCollider.gameObject.tag == "Cube Found")
                {      
                    Debug.DrawRay (ray.origin, ray.direction * 10, Color.red);
                    print (hit.transform.tag);

                    var += .5f;
                    print (var);
                    CubeCollider.transform.position = Vector3.MoveTowards (CubeCollider.transform.position, CubeFinishPosition, step);
                                                  
                    if (CubeCollider.transform.position == CubeFinishPosition)
                    {
                        Debug.Log ("End journey");
                    }
                    else
                    {
                        Debug.Log ("Traslating...");
                    }
                }
            }
            else
            {
                Debug.Log("No object find");           
                CubeGameObject.transform.Translate(CubeInitPosition); //I tried this but causes a funny behavior, my fps and cube move to infinity and then fall by gravity
            }              
    }

Any Ideas to solve this?

CubeGameObject.transform.Translate(CubeInitPosition);

(Line 55) Translate does not put your cube AT a position, but moves it by that amount. Instead use this:

CubeGameObject.transform.position = CubeInitPosition;

@MSplitz-PsychoK , thanks for reply! I will try it, thanks again!