public static void Main()
decimal amount = total - discount + ((total - discount) * waiver);
Console.WriteLine("Amount = " + amount);
decimal discountRate = Math.Round(((decimal)discount / ((decimal)total + ((total - discount) * waiver))) * 100,2, MidpointRounding.AwayFromZero);
Console.WriteLine("Discount Rate = " + discountRate);
decimal unitAmount = (discount < 0 ? (total - discount) : total) / (quantity == 0 ? 1 : quantity);
Console.WriteLine("Unit Amount = " + discountRate);
decimal roundedDiscount = Math.Round((decimal)discountRate, 2);
Console.WriteLine("Rounded Discount = " + roundedDiscount);
decimal discountAmount = ((decimal)unitAmount * (decimal)quantity) * (((decimal)roundedDiscount) / 100);
Console.WriteLine("Discount Amount = " + discountAmount);
decimal adjustedAmount = discount - discountAmount;
Console.WriteLine("Adjusted Discount = " + adjustedAmount);
decimal previousAmount = amount;
Console.WriteLine("Previous Amount = " + amount);
amount += adjustedAmount;
amount = Math.Round((decimal)amount, 2);
Console.WriteLine("New Amount = " + amount);
decimal adjAmount = (amount - previousAmount) * -1;
Console.WriteLine("Adjusted Amount = " + adjAmount);