diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,12 @@
 # Revision history for zeolite
 
+## 0.1.1.0  -- 2020-04-27
+
+* **[behavior]** Set the default output path for binaries to the module's path
+  rather than the current directory.
+
+* **[new]** Allows a base path (`-p`) with recompile mode (`-r`).
+
 ## 0.1.0.0  -- 2020-04-27
 
 * First version. Released on an unsuspecting world.
diff --git a/bin/unit-tests.hs b/bin/unit-tests.hs
--- a/bin/unit-tests.hs
+++ b/bin/unit-tests.hs
@@ -30,7 +30,7 @@
 
 
 main = runAllTests $ concat [
-    labelWith "DefinedCategoryTest"      DefinedCategoryTest.tests,
+    labelWith "DefinedCategoryTest" DefinedCategoryTest.tests,
     labelWith "TypeInstanceTest"    TypeInstanceTest.tests,
     labelWith "ParserTest"          ParserTest.tests,
     labelWith "TypeCategoryTest"    TypeCategoryTest.tests,
diff --git a/example/hello/README.md b/example/hello/README.md
--- a/example/hello/README.md
+++ b/example/hello/README.md
@@ -10,5 +10,5 @@
 zeolite -i lib/util -p "$ZEOLITE_PATH" -m HelloDemo example/hello
 
 # Execute the compiled binary.
-./HelloDemo
+$ZEOLITE_PATH/HelloDemo
 ```
diff --git a/example/regex/README.md b/example/regex/README.md
--- a/example/regex/README.md
+++ b/example/regex/README.md
@@ -16,5 +16,5 @@
 zeolite -p "$ZEOLITE_PATH" -t example/regex
 
 # Execute the compiled binary.
-./RegexDemo
+$ZEOLITE_PATH/RegexDemo
 ```
diff --git a/example/tree/README.md b/example/tree/README.md
--- a/example/tree/README.md
+++ b/example/tree/README.md
@@ -16,5 +16,5 @@
 zeolite -p "$ZEOLITE_PATH" -t example/tree
 
 # Execute the compiled binary.
-./TreeDemo
+$ZEOLITE_PATH/TreeDemo
 ```
diff --git a/src/Cli/Compiler.hs b/src/Cli/Compiler.hs
--- a/src/Cli/Compiler.hs
+++ b/src/Cli/Compiler.hs
@@ -347,8 +347,11 @@
       cs <- fmap concat $ collectAllOrErrorM $ map parsePublicSource fs
       includeNewTypes tm cs
     mergeInternal ds = (concat $ map fst ds,concat $ map snd ds)
-    getBinaryName (CompileBinary n _) = canonicalizePath $ if null o then n else o
-    getBinaryName _                   = return ""
+    getBinaryName (CompileBinary n _)
+      | null o              = canonicalizePath $ p </> head ds </> n
+      | o == takeFileName o = canonicalizePath $ p </> head ds </> o
+      | otherwise           = canonicalizePath o
+    getBinaryName _ = return ""
     createBinary b r deps ma@(CompileBinary n _) ms
       | length ms > 1 = do
         hPutStrLn stderr $ "Multiple matches for main category " ++ n ++ "."
@@ -358,7 +361,6 @@
         exitFailure
       | otherwise = do
           f0 <- getBinaryName ma
-          let f0 = if null o then n else o
           let (CxxOutput _ _ _ ns2 req content) = head ms
           -- TODO: Create a helper or a constant or something.
           (o',h) <- mkstemps "/tmp/zmain_" ".cpp"
diff --git a/src/Cli/ParseCompileOptions.hs b/src/Cli/ParseCompileOptions.hs
--- a/src/Cli/ParseCompileOptions.hs
+++ b/src/Cli/ParseCompileOptions.hs
@@ -207,8 +207,6 @@
   | (not $ null $ es ++ ep) && (isCreateTemplates m) =
     compileError "Extra files (-e) are not allowed in template mode (--templates)."
 
-  | (not $ null p) && (isCompileRecompile m) =
-    compileError "Path prefix (-p) is not allowed in recompile mode (-r)."
   | (not $ null o) && (isCompileRecompile m) =
     compileError "Output filename (-o) is not allowed in recompile mode (-r)."
   | (not $ null $ is ++ is2) && (isCompileRecompile m) =
diff --git a/tests/multiple-defs/README.md b/tests/multiple-defs/README.md
--- a/tests/multiple-defs/README.md
+++ b/tests/multiple-defs/README.md
@@ -7,7 +7,8 @@
 To compile:
 
 ```shell
-../../zeolite -r .
+ZEOLITE_PATH=$(zeolite --get-path)
+zeolite -r $ZEOLITE_PATH/tests/multiple-defs
 ```
 
 The compiler error should look something like this:
diff --git a/zeolite-lang.cabal b/zeolite-lang.cabal
--- a/zeolite-lang.cabal
+++ b/zeolite-lang.cabal
@@ -1,5 +1,5 @@
 name:                zeolite-lang
-version:             0.1.0.0
+version:             0.1.1.0
 synopsis:            Zeolite is a statically-typed, general-purpose programming language.
 
 description:
