Translate issue with Vector3.MoveTowards

I have a problem with the translation, MoveTowards work normally with transform but When I try to use it through translate I’ve got many errors like following error:

transform.position assign attempt for 'SecondCpu' is not valid. Input position is { Infinity, -4461021470593428500000.000000, -4463786117814680600000.000000 }.
UnityEngine.Transform:Translate(Single, Single, Single)

My Code:

var MoveDir : Vector3;

MoveDir = Vector3.MoveTowards(mainObject.position, AIObject[0].position, avgSpeed);

mainObject.Translate(MoveDir * Time.deltaTime);

var MoveDir : Vector3;

MoveDir = Vector3.MoveTowards(mainObject.position, AIObject[0].position, avgSpeed); 
transform.Translate(MoveDir * Time.deltaTime);

OK it works this way but I don’t get what you are trying to do. Both MoveTowards and Translate have a similar effect.

Also when doing this, the object keeps on going so I guess you cannot really do anything like this.

This is the code I used:

var MoveDir : Vector3;
var target: Transform;
var speed=0.001f;
function Update(){
MoveDir = Vector3.MoveTowards(transform.position, target.position, speed);
Debug.Log(MoveDir);
transform.Translate(MoveDir * Time.deltaTime);
}

And all it does is going towards the target, passes it and keeps on going and going faster and faster despite the 0,001.