You have to reset the properties after the tween finishes for it to play again. Seems silly given your doing a 360 but alot of times roblox will switch some of the values to like -0 or 0. So the tween thinks its already done. Also make sure the variables inside the loop are local to the loop. This will ensure a brand new tween is created each time.
Chango local spininfo to this
local spininfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.In, 1, true) – True value says if it returns back after end