Very few little improvements.
diff --git a/Lib/decimal.py b/Lib/decimal.py
index 7ae59d1..8870471 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -938,15 +938,13 @@
                 sign = 1
             return Decimal( (sign, (0,), exp))
         if not self:
-            if exp < other._exp - context.prec-1:
-                exp = other._exp - context.prec-1
+            exp = max(exp, other._exp - context.prec-1)
             ans = other._rescale(exp, watchexp=0, context=context)
             if shouldround:
                 ans = ans._fix(context)
             return ans
         if not other:
-            if exp < self._exp - context.prec-1:
-                exp = self._exp - context.prec-1
+            exp = max(exp, self._exp - context.prec-1)
             ans = self._rescale(exp, watchexp=0, context=context)
             if shouldround:
                 ans = ans._fix(context)
@@ -1228,7 +1226,6 @@
         if divmod and res.exp > context.prec + 1:
             return context._raise_error(DivisionImpossible)
 
-        ans = None
         prec_limit = 10 ** context.prec
         while 1:
             while op2.int <= op1.int:
@@ -1454,24 +1451,25 @@
         if context is None:
             context = getcontext()
         prec = context.prec
-        ans = self._fixexponents(prec, context)
+        ans = self._fixexponents(context)
         if len(ans._int) > prec:
             ans = ans._round(prec, context=context)
-            ans = ans._fixexponents(prec, context)
+            ans = ans._fixexponents(context)
         return ans
 
-    def _fixexponents(self, prec, context):
+    def _fixexponents(self, context):
         """Fix the exponents and return a copy with the exponent in bounds.
         Only call if known to not be a special value.
         """
         folddown = context._clamp
         Emin = context.Emin
-        ans = Decimal(self)
+        ans = self
         ans_adjusted = ans.adjusted()
         if ans_adjusted < Emin:
             Etiny = context.Etiny()
             if ans._exp < Etiny:
                 if not ans:
+                    ans = Decimal(self)
                     ans._exp = Etiny
                     context._raise_error(Clamped)
                     return ans
@@ -1493,6 +1491,7 @@
                 Emax = context.Emax
                 if ans_adjusted > Emax:
                     if not ans:
+                        ans = Decimal(self)
                         ans._exp = Emax
                         context._raise_error(Clamped)
                         return ans
@@ -1508,7 +1507,6 @@
         context determines it.
         """
 
-
         if self._is_special:
             ans = self._check_nans(context=context)
             if ans: