diff --git a/Foreign/Maude.hs b/Foreign/Maude.hs
--- a/Foreign/Maude.hs
+++ b/Foreign/Maude.hs
@@ -38,6 +38,7 @@
     -- $future
     ) where
 
+import Data.Char (isSpace)
 import Data.List (break, stripPrefix)
 import System.IO (hPutStrLn, hClose, openTempFile)
 import System.Directory (getCurrentDirectory, removeFile)
@@ -67,7 +68,7 @@
 
 -- | The 'rewrite' function takes a list of Maude file names and a term, and
 -- attempts to rewrite the term in the context of those files.  It assumes
--- the command to run Maude is \"maude\" and that it located somewhere in
+-- the command to run Maude is \"maude\" and that it is located somewhere in
 -- @$PATH@.
 rewrite :: [FilePath] -> String -> IO (Maybe MaudeResult)
 rewrite files term = do
@@ -80,16 +81,21 @@
 -- | Parse Maude's output into a MaudeResult.  The current implementation
 -- does very little sanity checking and can not parse Maude failures.
 parseMaudeResult :: String -> Maybe MaudeResult
-parseMaudeResult str = case lines str of
-    (stats : res : _) -> do
-        r <- stripPrefix "result " res
-        let (sort, term) = break (==':') r
-        return $ MaudeResult
-            { resultSort = sort
-            , resultTerm = drop 2 term
-            , statistics = stats
-            }
-    _ -> Nothing
+parseMaudeResult str = do
+    let (stats, rest) = break (== '\n') str
+    r <- stripPrefix "\nresult " rest
+    let (sort, rest') = break (== ':') r
+    let term = parseTerm rest'
+    return $ MaudeResult
+        { resultSort = sort
+        , resultTerm = term
+        , statistics = stats
+        }
+    where parseTerm = trim
+                    . concat
+                    . filter (/= "Bye.")
+                    . lines
+                    . drop 1    -- Remove the ':'
     
 -- | Create a temporary file which contains the commands Maude should run at
 -- startup, namely some formatting commands, the rewrite command, and quit.
@@ -103,6 +109,11 @@
     hPutStrLn tmph "quit"
     hClose tmph
     return tmpf
+
+-- | Remove leading and trailing whitespace from a string.
+trim :: String -> String
+trim = f . f
+    where f = reverse . dropWhile isSpace
 
 {- $examples
 
diff --git a/maude.cabal b/maude.cabal
--- a/maude.cabal
+++ b/maude.cabal
@@ -1,8 +1,8 @@
 Name:               maude
-Version:            0.1.2
+Version:            0.1.3
 Synopsis:           An interface to the Maude rewriting system.
 Description:        This package provides a simple interface for doing Maude
-                    rewrites from within Haskell.        
+                    rewrites from within Haskell.
 Homepage:           https://code.google.com/p/maude-hs/
 License:            MIT
 License-file:       LICENSE
