I think, the cycle being created in the for is the problem. I might be completely wrong though...
This would be my workaround (and now it could be yours!):
It does what I think yours would do if it worked.
The main difference is that you have to set a maximum limit for the number of voices (by changing the Data cyclePositions size).
-N