mmcconnell1618/MerchantTribe — pull request #2 by NightOwl888 (2012-03-31 18:14:17+00:00)
Title: Changed Math.Round() calls to use the appropriate overload so the mid point will always round away from zero.

It is unfortunate that Microsoft decided to make the default rounding scheme of .NET use "Toward Even", otherwise called "banker's rounding". This rounding method works great for splitting up averages to make reports more accurate (in some cases), but it is not the rounding that we all learned in school. This means that most users and developers will be surprised by the output of any math that uses any of the .NET Round implementations, which by definition makes it a bug. Even worse, these bugs are difficult to catch during testing.

The most compelling argument to use MidPointRounding.AwayFromZero as the 3rd parameter when calling Math.Round is because this is the way it is done in nearly every other programming language including JavaScript and Transact-SQL. If for any reason you needed to do the exact same calculation in either of these contexts you could end up with a different result.

Furthermore, users have complained about this very issue in prior versions of BV: http://merchanttribe.com/forums/default.aspx?m=46979&f=24&p=1#m58405

More Info:
http://siderite.blogspot.com/2011/02/mathround-in-net-is-buggy.html
http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx