繰り返し処理を用いてリンクを大量に作りたいのですが、どうにも上手く行きません。

sf.bbbは配列、tf.countはsf.bbbの要素の数が入っているとします。

[eval exp="tf.i = 0"]
*loop
[if exp="tf.i < tf.count"]
[link exp="tf.aaa = sf.bbb[&tf.i]" target=*abc][emb exp="sf.bbb[&tf.i]"][endlink]
[r]
[eval exp="tf.i++"]
[jump target=*loop]
[endif]


と書いたときに実際にリンクがsf.bbbの要素の数分表示されるのですが、クリックした時に
tf.aaaにsf.bbb[&tf.i]の値が正しく代入されません。
原因はexpの属性で、リンクを作成したときではなく、クリックされた時のsf.bbb[&tf.i]の値が代入されているからだと思うのですが
どこをどう書き換えたら思うとおりの処理が出来るのかがわかりません。

要点をまとめると、リンクをクリックした時に、リンクが作成された時のsf.bbb[&tf.i]の値を、tf.aaaに受け取るようにしたいのです。
リンクの数(配列の要素の数)はいくつになるかは分かりません。
どのような書きかたでも構いません。どなたか分かる方が居ましたらどうかご教授お願いします。
長文失礼しました。