Если у вас стоит priceDiscTable.SearchAgain, то, наверное, проявился вот этот косячок:
вместо
X++:
actualPriceTable = priceDiscTable.data();
в findPriceAgreement теперь
X++:
actualPriceTable = priceDiscTable;
и курсор, как это ни странно, на следующем шаге очищается...
PS. Если есть возможность, зарегистрируйте в MS, пожалуйста.