diff --git a/avwx.cabal b/avwx.cabal
--- a/avwx.cabal
+++ b/avwx.cabal
@@ -1,5 +1,5 @@
 name:                avwx
-version:             0.3.0.2
+version:             0.3.0.3
 synopsis:            Parse aviation weather reports
 description:         Parse aviation weather reports, currently METARs and TAFs
 homepage:            https://www.hcesperer.org/posts/2016-09-20-avwx.html
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,6 @@
 # 0.3.0.2
 
-* Fix a TAF parsing bug
+* Make it compile with a new ghc version
 
 # 0.3.0.0
 
diff --git a/src/Data/Aviation/WX.hs b/src/Data/Aviation/WX.hs
--- a/src/Data/Aviation/WX.hs
+++ b/src/Data/Aviation/WX.hs
@@ -103,7 +103,7 @@
 import Data.Maybe(isNothing, catMaybes)
 import Data.Text(Text, pack)
 import Text.Parser.Char(CharParsing, space, spaces, char, satisfy, text, digit, anyChar)
-import Text.Parser.Combinators(try, option, choice, sepBy, sepBy1, count)
+import Text.Parser.Combinators(try, option, choice, sepBy, sepBy1, count, unexpected)
 
 takeChars ::
   CharParsing f =>
@@ -729,7 +729,7 @@
     _ <- char 'V'
     dir2 <- (\a b c -> read [a, b, c]) <$> digit <*> digit <*> digit
     return $ Varying meanWind dir1 dir2
-variableWindParser _ = fail "Erroneous parameters"
+variableWindParser _ = unexpected "Erroneous parameters"
 
 windParser :: (Monad f, CharParsing f) => f Wind
 windParser = do
@@ -765,8 +765,8 @@
     obfs <- perhaps obfuscationParser
     othr <- perhaps otherParser
     when ( (== 0) . Prelude.length . Prelude.filter not $
-        [ isNothing prc
-        , isNothing obfs, isNothing othr ] ) $ fail ""
+        [ isNothing dsc, isNothing prc
+        , isNothing obfs, isNothing othr ] ) $ unexpected ""
     return $ Phenomenon intsy dsc prc obfs othr
 
 perhaps :: Alternative m => m a -> m (Maybe a)
@@ -1015,7 +1015,7 @@
                 [ "TEMPO" `callsfor` (TEMPO <$> parseFrom <*> parseTo <*> transitionParser)
                 , "BECMG" `callsfor` (BECMG <$> parseFrom <*> parseTo <*> transitionParser)
                 , "FM" `callsfor` (BECMG <$> parseFromFM <*> pure Nothing <*> transitionParser)
-                , "PROB" `callsfor`  (PROB  <$> twoDigits <*> (spaces >> transitionTypeParser)) ]
+                , "PROB" `callsfor`  (PROB  <$> twoDigits <*> (head <$> changesParser)) ]
         transitionParser = sepBy1 oneTransition (char ' ')
         parseFromFM = do
             fromDate <- dateParserSansZulu
