Object not moving in direction of target

So I am instantiating a missile with this script.
The object is instantiating and moving but it’s moving in a weird direction and NOT towards specified target object.

I thought it might be the transform of the target might be buggy so I had the script get the transform of another object in the scene, but the missile still goes in a weird direction.

How do I get this missile object to travel in the direction of the target? What am I doing wrong?

public class FireMissile : MonoBehaviour {

	public Transform target;
	public Vector3 dir;
	public float speed = 2f;
	// Use this for initialization

	void Start () 
	{
		speed = 2f;
		target = GameObject.Find("ship").transform;

		dir = target.position;

		Invoke ("elimin", 3);

	}

	void Update()
	{ 
		dir = transform.position - target.position;
		dir.Normalize ();
		transform.Translate (dir * speed * Time.deltaTime);
	}

	void elimin()
	{
		Destroy (this.gameObject);
	}


}

dir = target.position - transform.position;

Will give you the correct result. Direction = Subtraction of your position from target position.

Vector Arithmetic - Unity Manual