I don't know if this will be of any *real* use to you, but:
Judging by my understanding of what's happening and the scenario you're presenting; I have to say that what you are describing - makes sense...
Let me explain... But first, a few assumptions on my part:
1) You're using a model for your space craft (duh).
2) That model defines vertex points at various positions which define the overall shape of the model (again, duh).
3) You're using some sort of transformation/rotation etc. that moves the object/camera in world-space (most likely using matrix math?) (yet again, duh) and;
4) You're using floating (and/or double) precision values in your calculations....
Are you with me so far?
Now, with these assumptions in place, let me just say that it sounds to me like a mathematical precision error... Remember, you're trying to represent numeric values (floating point) using a mere 32-bits...
With that in mind, 32-bits of precision on a scale of 0 to 1 equals
2^32 = 4294967296 and when scaling the results (1/4294967296) = 0.00000000023283064365386962890625 - which is the minimum adjustment required to reflect a change of a single bit (remember there's only 32) in floating point math...
Now, here's where I believe your problems comes from:
What happens if instead of some multiple of 0.00000000023283064365386962890625 being the adjustment required, it is actually a multiple of say 0.00000000023283064365386924351763? Instead of adjusting a single-bit, you would be required to adjust ~.99-bits; which obviously can't be currently done...
Are you with me so far?
Since you can't adjust just .99-bits, that adjustment would be modified in some way (either left out completely or rounded up) but either way, it would introduce *errors* in the math. Apply those errors, over time, to each vertex point of the model and Yes, I can envision exactly what you are seeing...
How would you fix this? I can tell you my approach, be it right or wrong, this is how I'd approach it:
First, I would choose a single point on the model that I would dub *Home*. From that point, I would cast a ray recording the direction and distance to EACH of the other points of the model and record that information...
From time to time, be it 10, 20, 30 frames (or some other measurable value) test the current values with the original values and correct vertex-data accordingly...
I hope this helps... I know it doesn't answer your question entirely, but I do hope it helps you understand what's going on. I really don't think, from the sounds of it, that you have an error in code (but I could be wrong)...
Regards,
Jumpster