The reason behind this is that the code "colorHSVA := {[(system.time * 100), 1, 1, 1]}" does it lookup to find "system.time" through the now dead object (since it was the parent), thereby not finding "system.time". This is due to how Thyme works, and is not very easy to just "fix".
However, in 1.7.4 I will be introducing the Thyme function "geval" - like eval, but everything in it will be evaluated in the global scope - ie NOT through the dead parent. All you need to do is rewrite the function from this:
The problem is that the springs are so strong that whenever the bottom circle looses touch with the top circle-shaped polygon (and they will loose touch, since it is a polygon, and not a perfect circle), the spring will in one time-step catapult it down a huge amount.
Either lower the spring strength, or transform the polygon to a circle. Or twiddle with Sim.targetPenetration.
Your script assignes the same body to all spawned boxes, which means they move as one. Just omit the "body" attribute to get a new body. In fact, what you probably want is something short and nice like: