'Round a nonzero, nonspecial Decimal to a fixed number of
significant figures, using the given rounding mode.
Infinities, NaNs and zeros are returned unaltered.
This operation is quiet: it raises no flags, and uses no
information from the context.'

def _round(self, places, rounding):

    if (places <= 0):
        raise ValueError('argument    should    be    at    least    1    in    _round')
    if (self._is_special or (not self)):
        return Decimal(self)
    ans = self._rescale(((self.adjusted() + 1) - places), rounding)
    if (ans.adjusted() != self.adjusted()):
        ans = ans._rescale(((ans.adjusted() + 1) - places), rounding)
    return ans
