'Round if it is necessary to keep self within prec precision.
Rounds and fixes the exponent.  Does not raise on a sNaN.
Arguments:
self - Decimal instance
context - context used.'

def _fix(self, context):

    if self._is_special:
        return self
    if (context is None):
        context = getcontext()
    prec = context.prec
    ans = self._fixexponents(context)
    if (len(ans._int) > prec):
        ans = ans._round(prec, context=context)
        ans = ans._fixexponents(context)
    return ans
