'Returns a copy with the sign switched.
Rounds, if it has reason.'

def __neg__(self, context=None):

    if self._is_special:
        ans = self._check_nans(context=context)
        if ans:
            return ans
    if (not self):
        sign = 0
    elif self._sign:
        sign = 0
    else:
        sign = 1
    if (context is None):
        context = getcontext()
    if (context._rounding_decision == ALWAYS_ROUND):
        return Decimal((sign, self._int, self._exp))._fix(context)
    return Decimal((sign, self._int, self._exp))
