Оба типа преобразуются друг в друга "за сценой" согласно правилам (это не фортран, где все преобразования делаются только явно).
Насчет значений индикаторов. Значения сохраняются в серии, а в серии состоят из double. Так что если вы даже ведете расчёты в int, то присвоение все равно идет в элемент серии, т.е. в double.
Насчет сравнения. Если вычисления в индикаторе целые и результаты совпадают, то присвоенные double, конечно, будут идентичными, и сравнение пройдет нормально.
Насчет "зависания" while. Это не зависание, а бесконечный цикл (вечное равенство). Почему оно возникало, это надо разбираться (писать в лог; лог, кстати, тоже жутко тормозит, так что лучше это делать либо при отключенной связи или уже после торгов). Возможно, внутри цикла следует поставить страховку по числу проходов, хотя тогда это будет мало отличаться от цикла for.