diff --git a/hs-src/Compiler/huskc.hs b/hs-src/Compiler/huskc.hs
--- a/hs-src/Compiler/huskc.hs
+++ b/hs-src/Compiler/huskc.hs
@@ -77,6 +77,7 @@
 options = [
   Option ['V'] ["version"] (NoArg showVersion) "show version number",
   Option ['h', '?'] ["help"] (NoArg showHelp) "show usage information",
+  Option [] ["debug"] (NoArg showDebug) "show debug information",
   Option ['o'] ["output"] (ReqArg writeExec "FILE") "output file to write",
   Option ['d'] ["dynamic"] (NoArg getDynamic) "use dynamic linking for the compiled executable",
   Option ['x'] ["extra"] (ReqArg getExtraArgs "Args") "extra arguments to ghc"
@@ -108,6 +109,14 @@
   putStrLn "  --dynamic             Use dynamic Haskell libraries, if available"
   putStrLn "                        (Requires libraries built via --enable-shared)"
   putStrLn "  --extra args          Pass extra arguments directly to ghc"
+  putStrLn ""
+  exitWith ExitSuccess
+
+-- |Print debug information
+showDebug :: Options -> IO Options
+showDebug _ = do
+  stdlib <- getDataFileName "stdlib.scm"
+  putStrLn $ "stdlib: " ++ stdlib
   putStrLn ""
   exitWith ExitSuccess
 
diff --git a/hs-src/Interpreter/shell.hs b/hs-src/Interpreter/shell.hs
--- a/hs-src/Interpreter/shell.hs
+++ b/hs-src/Interpreter/shell.hs
@@ -33,26 +33,26 @@
 
 runOne :: [String] -> IO ()
 runOne args = do
-  {- Use this to suppress unwanted output.
-     Makes this unix-specific, but as of now
-     everything else is anyway, so... -}
-  nullIO <- openFile "/dev/null" WriteMode
-
   stdlib <- getDataFileName "stdlib.scm"
   env <- primitiveBindings >>= flip extendEnv
                                    [((varNamespace, "args"),
                                     List $ map String $ drop 1 args)]
   _ <- evalString env $ "(load \"" ++ stdlib ++ "\")" -- Load standard library
-  (runIOThrows $ liftM show $ evalLisp env (List [Atom "load", String (args !! 0)]))
-     >>= hPutStr nullIO
+  result <- (runIOThrows $ liftM show $ evalLisp env (List [Atom "load", String (args !! 0)]))
+  case result of
+    "" -> putStr result
+    _  -> putStrLn result 
 
   -- Call into (main) if it exists...
   alreadyDefined <- liftIO $ isBound env "main"
   let argv = List $ map String $ args
   if alreadyDefined
-     then (runIOThrows $ liftM show $ evalLisp env
-            (List [Atom "main", List [Atom "quote", argv]])) >>= hPutStr stderr
-     else (runIOThrows $ liftM show $ evalLisp env (Nil "")) >>= hPutStr stderr
+     then do 
+            mainResult <- (runIOThrows $ liftM show $ evalLisp env (List [Atom "main", List [Atom "quote", argv]]))
+            case mainResult of
+              "" -> putStr mainResult
+              _  -> putStrLn mainResult
+     else putStr "" 
 
 runRepl :: IO ()
 runRepl = do
diff --git a/hs-src/Language/Scheme/Core.hs b/hs-src/Language/Scheme/Core.hs
--- a/hs-src/Language/Scheme/Core.hs
+++ b/hs-src/Language/Scheme/Core.hs
@@ -37,7 +37,7 @@
 import System.IO
 
 version :: String
-version = "3.5.3"
+version = "3.5.3.1"
 
 showBanner :: IO ()
 showBanner = do
diff --git a/hs-src/Language/Scheme/Numerical.hs b/hs-src/Language/Scheme/Numerical.hs
--- a/hs-src/Language/Scheme/Numerical.hs
+++ b/hs-src/Language/Scheme/Numerical.hs
@@ -69,6 +69,8 @@
         doMul (List [(Complex a), (Complex b)]) = return $ Complex $ a * b
         doMul _ = throwError $ Default "Unexpected error in *"
 numDiv [] = throwError $ NumArgs 1 []
+numDiv [Number 0] = throwError $ DivideByZero 
+numDiv [Rational 0] = throwError $ DivideByZero  
 numDiv [Number n] = return $ Rational $ 1 / (fromInteger n)
 numDiv [Float n] = return $ Float $ 1.0 / n
 numDiv [Rational n] = return $ Rational $ 1 / n
diff --git a/hs-src/Language/Scheme/Parser.hs b/hs-src/Language/Scheme/Parser.hs
--- a/hs-src/Language/Scheme/Parser.hs
+++ b/hs-src/Language/Scheme/Parser.hs
@@ -179,7 +179,11 @@
       num <- many1 (digit)
       if (length sign) > 1
          then pzero
-         else return $ Rational $ n % (read $ sign ++ num)
+         else do
+             let pdenominator = read $ sign ++ num
+             if pdenominator == 0
+                then return $ Number 0 -- TODO: Prevents a div-by-zero error, but not really correct either
+                else return $ Rational $ n % pdenominator
     _ -> pzero
 
 parseComplexNumber :: Parser LispVal
diff --git a/husk-scheme.cabal b/husk-scheme.cabal
--- a/husk-scheme.cabal
+++ b/husk-scheme.cabal
@@ -1,5 +1,5 @@
 Name:                husk-scheme
-Version:             3.5.3
+Version:             3.5.3.1
 Synopsis:            R5RS Scheme interpreter, compiler, and library.
 Description:         A dialect of R5RS Scheme written in Haskell. Provides advanced 
                      features including continuations, hygienic macros, a Haskell FFI,
