'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 (context is None):
        context = getcontext()
    if ((not self) and (context.rounding != ROUND_FLOOR)):
        ans = self.copy_abs()
    else:
        ans = self.copy_negate()
    return ans._fix(context)
