public static void Main()
decimal[] vatAmountLines = {(decimal)20.17, (decimal)20.175, (decimal)20.18};
decimal headerCorrection = (decimal)0.05;
decimal vatReclaimPerc = (decimal)0.5;
foreach(var vatAmountLine in vatAmountLines){
vatAmountRecov = Math.Round((vatAmountLine - headerCorrection) * vatReclaimPerc, 2, MidpointRounding.AwayFromZero);
vatAmountNonR = Math.Round((vatAmountLine - headerCorrection) * (1 - vatReclaimPerc), 2, MidpointRounding.AwayFromZero);
roundingDiff = Math.Round(vatAmountLine, 2, MidpointRounding.AwayFromZero) - headerCorrection - (vatAmountRecov + vatAmountNonR);
Console.WriteLine($"\nValue: {vatAmountLine}");
Console.WriteLine($"\nHeader corrected values:");
Console.WriteLine($"\t{vatAmountRecov}, {vatAmountNonR}, {roundingDiff}");
vatAmountRecov = Math.Round(vatAmountLine * vatReclaimPerc, 2, MidpointRounding.AwayFromZero);
vatAmountNonR = Math.Round(vatAmountLine * (1 - vatReclaimPerc), 2, MidpointRounding.AwayFromZero);
roundingDiff = Math.Round(vatAmountLine, 2, MidpointRounding.AwayFromZero) - (vatAmountRecov + vatAmountNonR);
Console.WriteLine($"Values:");
Console.WriteLine($"\t{vatAmountRecov}, {vatAmountNonR}, {roundingDiff}");
Console.WriteLine("\n========================================================================");