 
     private var amountToPayWithoutPayerCost: Double {
         if let couponAmount = paymentData.discount?.couponAmount {
-            return preferenceAmount - couponAmount + chargeRuleAmount
+            // preferenceAmount - couponAmount + chargeRuleAmount
+            let decimalPreferenceAmount = PXAmountHelper.getRoundedAmountAsNsDecimalNumber(amount: preferenceAmount)
+            let decimalCouponAmount = PXAmountHelper.getRoundedAmountAsNsDecimalNumber(amount: couponAmount)
+            let decimalChargeRuleAmount = PXAmountHelper.getRoundedAmountAsNsDecimalNumber(amount: chargeRuleAmount)
+            
+            let sum = (decimalPreferenceAmount.subtracting(decimalCouponAmount)).adding(decimalChargeRuleAmount)
+            
+            guard let doubleSum = Double(sum.stringValue) else { return preferenceAmount + chargeRuleAmount }
+            
+            return doubleSum
         } else {
-            return preferenceAmount + chargeRuleAmount
+            // preferenceAmount + chargeRuleAmount
+            return preferenceAmountWithCharges
         }
     }
 

        if let payerCost = paymentData.payerCost {
            return payerCost.totalAmount
        }
        if let couponAmount = paymentData.discount?.couponAmount {
            return preferenceAmount - couponAmount + chargeRuleAmount
        } else {
            return preferenceAmount + chargeRuleAmount
        }
    }

    var isSplitPayment: Bool {

    }

    var preferenceAmountWithCharges: Double {
        // 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? {
