Если вы посмотрите ниже,
X++:
unrealisedAmountMST = Currency::amount(_exchRateDiff * abs(_settleAmountCur / (openAmountCur ? openAmountCur : _settleAmountCur)));
то вы поймете, что, на самом деле, этот фикс вообще никак не влияет на результат, т.к. отношение _settleAmountCur / (openAmountCur ? openAmountCur : _settleAmountCur) берется по модулю и важно само отношение, но не его знак.