diff --git a/Text/XML/XSD/DateTime.hs b/Text/XML/XSD/DateTime.hs
--- a/Text/XML/XSD/DateTime.hs
+++ b/Text/XML/XSD/DateTime.hs
@@ -14,12 +14,11 @@
                             ) where
 
 import Text.ParserCombinators.Parsec
+import Data.Ord
 import Data.Maybe
-import Data.Char
 import Data.Time
 import Data.Function
 import Control.Monad
-import Control.Monad.Instances
 import Control.Arrow
 
 -- | XSD @dateTime@ data structure <http://www.w3.org/TR/xmlschema-2/#dateTime>
@@ -36,7 +35,7 @@
   (==) = (==) `on` (zonedTimeToLocalTime . toZonedTime &&& zonedTimeZone . toZonedTime)
 
 instance Ord DateTime where
-  compare = compare `on` (zonedTimeToLocalTime . toZonedTime &&& zonedTimeZone . toZonedTime)
+  compare = comparing (zonedTimeToLocalTime . toZonedTime &&& zonedTimeZone . toZonedTime)
 
 -- | Parses the string into a @dateTime@ or may fail with a parse error.
 dateTime' :: String -> Either ParseError DateTime
@@ -156,10 +155,7 @@
 
 fractionalSeconds :: GenParser Char st String
 fractionalSeconds = do char '.'
-                       d <- many1 digit
-                       if last d == '0'
-                         then unexpected "zero digit"
-                         else return d
+                       many1 digit
 
 p2imax :: Int -> GenParser Char st Int
 p2imax m = do a <- digit
diff --git a/xsd.cabal b/xsd.cabal
--- a/xsd.cabal
+++ b/xsd.cabal
@@ -1,5 +1,5 @@
 Name:                xsd
-Version:             0.3.2
+Version:             0.3.3
 License:             BSD3
 License-File:        LICENSE
 Synopsis:            XML Schema data structures
