if( (100<i) < 500)

という判定になってるんじゃないの?
真偽のbool値をintと見て500と比較。