diff --git a/classify.cabal b/classify.cabal
--- a/classify.cabal
+++ b/classify.cabal
@@ -1,5 +1,5 @@
 Name:           classify
-Version:        2008.11.13
+Version:        2008.11.17
 Copyright:      2004-2008, Lemmih
 Build-Depends:  base, mtl, containers
 Build-Type:     Simple
diff --git a/src/Data/Classify/Parser.hs b/src/Data/Classify/Parser.hs
--- a/src/Data/Classify/Parser.hs
+++ b/src/Data/Classify/Parser.hs
@@ -95,7 +95,7 @@
            oneOf "XxEe."
 	   e <- many1 digit
            return (makeVersion s e, 0)
-      , do s <- count 1 digit +++ count 2 digit
+      , do s <- count 2 digit +++ count 1 digit
            e <- count 2 digit
            return (makeVersion s e, 0)
       , do oneOf "sS"
@@ -122,6 +122,7 @@
          many anyChar
 	 separator
 	 (v,s) <- parseVersion
+         satisfy (not.isDigit)
          separator
 	 (t,l) <- choice
                   [do { t <- manyTill anyChar (do char '.'
diff --git a/src/Data/Classify/Rank.hs b/src/Data/Classify/Rank.hs
--- a/src/Data/Classify/Rank.hs
+++ b/src/Data/Classify/Rank.hs
@@ -31,7 +31,8 @@
     = sum [ score elt,
             cleanExtension ==> 2,
             cleanTitle     ==> 1,
-            unrealVersion (version elt)
+            unrealVersion (version elt),
+            numLength (version elt)
           ]
     where 
           cleanExtension = all isAlpha (lastname elt)
@@ -39,11 +40,15 @@
 
 unrealVersion (Version season episode) = sum [ episode > 0 ==> 1
                                              , episode > 50 ==> negate 2
-                                             , season > 0 ==> 1
+                                             , season < 1 ==> negate 10
                                              , season > 30 ==> negate 1
                                              ]
 unrealVersion (DateVersion year month day) = 0
 
+numLength (Version season episode) = sum [ floor $ logBase 10 (fromIntegral season)
+                                         , floor $ logBase 10 (fromIntegral episode) ]
+numLength _ = 0
+
 infix 2 ==>
 True ==> n = n
 False ==> _ = 0
@@ -97,6 +102,8 @@
            , ("Heroes.S03E05.HDTV.XviD-LOL.avi", "Heroes", Version 3 5)
            , ("Californication.S02E04.720p.HDTV.X264-DIMENSION.mkv", "Californication", Version 2 4)
            , ("Psych - 1x09 - Forget Me Not.avi", "Psych", Version 1 9)
+           , ("south.park.1109.dsr.xvid-sys.[VTV].avi", "South Park", Version 11 9)
+           , ("South Park - 12x09 - Breast Cancer Show Ever.avi", "South Park", Version 12 9)
            ]
 
 runTests = flip mapM_ testData $ \(str, series, expectedVersion) ->
