This basic premise of this snake movement design is to leave trail x and y position and the angle.
Each of the body parts picks the last trail and angle left by of its previous head/body. In this case 15 trails away before the body parts start to pick up.
The data is recorded in 3D array.
Each level (z) is assigned for the head and each body part.
x,y as you may guess to record the x and y position and angle of each instance.
Since the data is recorded in every tick and the frame rate can go up and down, my guess is, the trail data is not always recorded at the same pace.
My prediction is if I can insert the data in timely manner and not get influenced by the frame rate I probably could solve the problem.
But then again, even if I add the wait for x seconds... before inserting the data, it does't help. Or maybe I did it wrongly.
Round Engine.
Since I don't use rounding engine, probably the problem is not there.
Pinning
I can't still get my head to simulate that. But I have seen the example of chain in the examples file. The movement is a bit different than what I have in mind.
But I will try it maybe there's a way to utilize it.