while ループの意図としては st% と ue% の中点を求めるってことであれば var m = (st% + ue%) / 2 でいいでしょう。 ついでにif 文のとこは hns-hns*2 = -hns だし、 hns+hns*2 = 3*hns なので def gntn(hns,st%,ue%) var m = (st% + ue%) / 2 if hns>=m then hns = -hns if hns<m then hns = 3*hns '変化させた hns を再度比較していいのかな??? return hns end