I put a boolean flag on the missile to see if it's trying to move twice in the same tick and sure enough it is:
<img src="https://dl.dropboxusercontent.com/u/8367729/construct/pics/foreachtwice1.PNG" border="0" />
Then I printed out the IID and UID of each missile in the 'for each missile' loop and got this:
<img src="https://dl.dropboxusercontent.com/u/8367729/construct/pics/foreachtwice.PNG" border="0" />