--- Quote Start ---
My rounding based on adding 2^(n-1) is the most common rounding used in hardware computations but is now termed (dc biased rounding) Vs dc unbiassed rounding. The difference is really trivial.
The biassed rounding(adding 16 in our case) goes wrong at so called ties i.e. exact (.5) points if the values are negative otherwise it is identical to "round" function.
Matlab has now functions like convergent, nearest, round, to give better performance mostly for bit accurate testbenching
--- Quote End ---
Thanks, Kaz.
Like I said interesting! I will take that into account in my future work. I probably will have no issue with rounding negative numbers as I favour using sign-magnitude representations where truncation goes toward zero in contrast to 2's complement numbers where truncation goes towards -infinity. Unfortunately sign-magnitude is not so efficient to implement.