When using the uv() function to project a point (IVec) on to a surface, there seem to be a problem if the surface is closed (like a tube or a cylinder).
A picture is worth a thousand words so :

The black line is where the UV coordinates wrap back, the red dots are projected through the yellow arrow to the magenta points. Around the seam, the projected points end up on the seam instead of their normal place.
Also, every 10 points or so, the projection is a bit off. Dunno if it's related or not...
I hope this can help correcting it !