やっていることはわかりますが、なぜそうしているのかがわかりません。ログを出力してデータの変化を確認してみないと理解できそうにありません。(それでもわかんなかったりするかも・・・)