I would expect d, d2, d3, and d4 to round to 0. When running your code I see d1 round to 0.001
AwayFromZero means Round to nearest mode: when a number is halfway between two others, it is rounded toward the nearest number that is away from zero.
https://learn.microsoft.com/en-us/dotnet/api/system.midpointrounding?view=net-5.0