Minor clean-up and more tests.
diff --git a/Lib/rational.py b/Lib/rational.py
index 5d21a8f..070e593 100755
--- a/Lib/rational.py
+++ b/Lib/rational.py
@@ -179,7 +179,9 @@
         for e in reversed(seq):
             n, d = d, n
             n += e * d
-        return cls(n, d)
+        if seq:
+            return cls(n, d)
+        return cls(0)
 
     def as_continued_fraction(self):
         'Return continued fraction expressed as a list'
@@ -200,7 +202,7 @@
         # Still needs rounding rules as specified at
         #       http://en.wikipedia.org/wiki/Continued_fraction
         cf = cls.from_float(f).as_continued_fraction()
-        result = new = Rational(0, 1)
+        result = Rational(0)
         for i in range(1, len(cf)):
             new = cls.from_continued_fraction(cf[:i])
             if new.denominator > max_denominator:
diff --git a/Lib/test/test_rational.py b/Lib/test/test_rational.py
index 76757ba..0f0a48d 100644
--- a/Lib/test/test_rational.py
+++ b/Lib/test/test_rational.py
@@ -140,12 +140,23 @@
         phi = R.from_continued_fraction([1]*100)
         self.assertEquals(round(phi - (1 + 5 ** 0.5) / 2, 10), 0.0)
 
+        minusphi = R.from_continued_fraction([-1]*100)
+        self.assertEquals(round(minusphi + (1 + 5 ** 0.5) / 2, 10), 0.0)
+
+        self.assertEquals(R.from_continued_fraction([0]), R(0))
+        self.assertEquals(R.from_continued_fraction([]), R(0))
+
     def testAsContinuedFraction(self):
         self.assertEqual(R.from_float(math.pi).as_continued_fraction()[:15],
                          [3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 3, 3])
+        self.assertEqual(R.from_float(-math.pi).as_continued_fraction()[:16],
+                         [-4, 1, 6, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 3, 3])
+        self.assertEqual(R(0).as_continued_fraction(), [0])
 
     def testApproximateFromFloat(self):
         self.assertEqual(R.approximate_from_float(math.pi, 10000), R(355, 113))
+        self.assertEqual(R.approximate_from_float(-math.pi, 10000), R(-355, 113))
+        self.assertEqual(R.approximate_from_float(0.0, 10000), R(0))
 
     def testConversions(self):
         self.assertTypedEquals(-1, trunc(R(-11, 10)))