     }
 
     var preferenceAmountWithCharges: Double {
-        return preferenceAmount + chargeRuleAmount
+        // preferenceAmount + chargeRuleAmount
+        let decimalPreferenceAmount = PXAmountHelper.getRoundedAmountAsNsDecimalNumber(amount: preferenceAmount)
+        let decimalChargeRuleAmount = PXAmountHelper.getRoundedAmountAsNsDecimalNumber(amount: chargeRuleAmount)
+        
+        let sum = decimalPreferenceAmount.adding(decimalChargeRuleAmount)
+        
+        guard let doubleSum = Double(sum.stringValue) else { return preferenceAmount + chargeRuleAmount }
+        
+        return doubleSum
     }
     
     var amount: Double? {


    private var amountToPayWithoutPayerCost: Double {
        if let couponAmount = paymentData.discount?.couponAmount {
            return preferenceAmount - couponAmount + chargeRuleAmount
        } else {
            return preferenceAmount + chargeRuleAmount
        }
    }


        if let payerCost = paymentData.payerCost {
            return payerCost.totalAmount
        }
        return amountToPayWithoutPayerCost
    }

    var isSplitPayment: Bool {
