262行目と263行目のIFの判定がおかしいので値が思った感じにならないところもありそうですね。