Index: /pyyaml/trunk/tests/test_constructor.py
===================================================================
--- /pyyaml/trunk/tests/test_constructor.py	(revision 225)
+++ /pyyaml/trunk/tests/test_constructor.py	(revision 234)
@@ -289,4 +289,8 @@
                                 (item2 != item2 or (item2 == 0.0 and item2 == 1.0)):
                             continue
+                        if isinstance(item1, datetime.datetime) \
+                                and isinstance(item2, datetime.datetime):
+                            self.failUnlessEqual(item1.microsecond,
+                                    item2.microsecond)
                         if isinstance(item1, datetime.datetime):
                             item1 = item1.utctimetuple()
Index: /pyyaml/trunk/tests/test_representer.py
===================================================================
--- /pyyaml/trunk/tests/test_representer.py	(revision 225)
+++ /pyyaml/trunk/tests/test_representer.py	(revision 234)
@@ -37,4 +37,8 @@
                                 (item2 != item2 or (item2 == 0.0 and item2 == 1.0)):
                             continue
+                        if isinstance(item1, datetime.datetime) \
+                                and isinstance(item2, datetime.datetime):
+                            self.failUnlessEqual(item1.microsecond,
+                                    item2.microsecond)
                         if isinstance(item1, datetime.datetime):
                             item1 = item1.utctimetuple()
Index: /pyyaml/trunk/tests/data/timestamp-bugs.data
===================================================================
--- /pyyaml/trunk/tests/data/timestamp-bugs.data	(revision 225)
+++ /pyyaml/trunk/tests/data/timestamp-bugs.data	(revision 234)
@@ -4,2 +4,3 @@
 - 2001-12-14 21:59:43+1
 - 2001-12-14 21:59:43-1:30
+- 2005-07-08 17:35:04.517600
Index: /pyyaml/trunk/tests/data/timestamp-bugs.code
===================================================================
--- /pyyaml/trunk/tests/data/timestamp-bugs.code	(revision 225)
+++ /pyyaml/trunk/tests/data/timestamp-bugs.code	(revision 234)
@@ -5,3 +5,4 @@
     datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(60, "+1")),
     datetime.datetime(2001, 12, 14, 21, 59, 43, 0, FixedOffset(-90, "-1:30")),
+    datetime.datetime(2005, 7, 8, 17, 35, 4, 517600),
 ]
Index: /pyyaml/trunk/lib/yaml/constructor.py
===================================================================
--- /pyyaml/trunk/lib/yaml/constructor.py	(revision 225)
+++ /pyyaml/trunk/lib/yaml/constructor.py	(revision 234)
@@ -301,5 +301,5 @@
                 :(?P<minute>[0-9][0-9])
                 :(?P<second>[0-9][0-9])
-                (?:(?P<fraction>\.[0-9]*))?
+                (?:\.(?P<fraction>[0-9]*))?
                 (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
                 (?::(?P<tz_minute>[0-9][0-9]))?))?)?$''', re.X)
@@ -319,5 +319,5 @@
         fraction = 0
         if values['fraction']:
-            fraction = int(float(values['fraction'])*1000000)
+            fraction = int(values['fraction'][:6].ljust(6, '0'))
         delta = None
         if values['tz_sign']:
