diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+Version 1.16
+------------
+  * fix interaction of runCpphsReturningSymTab with --nomacro
+
 Version 1.15
 ------------
   * Fix the interaction of --nomacro with --strip.
diff --git a/Language/Preprocessor/Cpphs/RunCpphs.hs b/Language/Preprocessor/Cpphs/RunCpphs.hs
--- a/Language/Preprocessor/Cpphs/RunCpphs.hs
+++ b/Language/Preprocessor/Cpphs/RunCpphs.hs
@@ -45,18 +45,24 @@
                  [] -> ""
                  is -> concatMap (\f->"#include \""++f++"\"\n") is 
                        ++ "#line 1 \""++filename++"\"\n"
-
-  pass1 <- cppIfdef filename (defines options) (includes options) bools
-                    (preInc++input)
-  (pass2,syms) <- macroPassReturningSymTab (defines options) bools pass1
-  let result= if not (macros bools)
-              then if   stripC89 bools || stripEol bools
-                   then concatMap deWordStyle $
-                        tokenise (stripC89 bools) (stripEol bools)
-                                 (ansi bools) (lang bools) pass1
-                   else unlines (map snd pass1)
-              else pass2
-      pass3 = if literate bools then Unlit.unlit filename else id
+  (pass2,syms) <-
+      if macros bools then do
+          pass1 <- cppIfdef filename (defines options) (includes options)
+                            bools (preInc++input)
+          macroPassReturningSymTab (defines options) bools pass1
+      else do
+          pass1 <- cppIfdef filename (defines options) (includes options)
+                            bools{macros=True} (preInc++input)
+          (_,syms) <- macroPassReturningSymTab (defines options) bools pass1
+          pass1 <- cppIfdef filename (defines options) (includes options)
+                            bools (preInc++input)
+          let result = if   stripC89 bools || stripEol bools
+                       then concatMap deWordStyle $
+                            tokenise (stripC89 bools) (stripEol bools)
+                                     (ansi bools) (lang bools) pass1
+                       else init $ unlines (map snd pass1)
+          return (result,syms)
 
-  return (pass3 result, syms)
+  let pass3 = if literate bools then Unlit.unlit filename else id
+  return (pass3 pass2, syms)
 
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 LIBRARY = cpphs
-VERSION = 1.15
+VERSION = 1.16
 
 DIRS	= Language/Preprocessor/Cpphs \
 	  Text/ParserCombinators
diff --git a/README b/README
--- a/README
+++ b/README
@@ -30,7 +30,7 @@
 
 COPYRIGHT
 ---------
-Copyright (c) 2004-2012 Malcolm Wallace (Malcolm.Wallace@me.com)
+Copyright (c) 2004-2013 Malcolm Wallace (Malcolm.Wallace@me.com)
 except for Text.ParserCombinators.HuttonMeijer (Copyright (c) 1995
 Graham Hutton and Erik Meijer).
 
diff --git a/cpphs.cabal b/cpphs.cabal
--- a/cpphs.cabal
+++ b/cpphs.cabal
@@ -1,5 +1,5 @@
 Name: cpphs
-Version: 1.15
+Version: 1.16
 Copyright: 2004-2012, Malcolm Wallace
 License: LGPL
 License-File: LICENCE-LGPL
diff --git a/cpphs.hs b/cpphs.hs
--- a/cpphs.hs
+++ b/cpphs.hs
@@ -20,7 +20,7 @@
 import Data.List   ( isPrefixOf )
 
 version :: String
-version = "1.15"
+version = "1.16"
 
 main :: IO ()
 main = do
diff --git a/docs/index.html b/docs/index.html
--- a/docs/index.html
+++ b/docs/index.html
@@ -198,13 +198,12 @@
 <b>Current stable version:</b>
 
 <p>
-cpphs-1.15, release date 2012.11.30<br>
+cpphs-1.16, release date 2013.01.22<br>
 By HTTP:
-<a href="http://code.haskell.org/cpphs/cpphs-1.15.tar.gz">.tar.gz</a>,
+<a href="http://code.haskell.org/cpphs/cpphs-1.16.tar.gz">.tar.gz</a>,
 <a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
 <ul>
-<li> Fix the interaction of --nomacro with --strip.
-<li> Fix the error message received when # appears without a command.
+<li> Fix the interaction of runCpphsReturningSymTab with --nomacro.
 </ul>
 
 <p>
@@ -227,6 +226,16 @@
 <p>
 <b>Older versions:</b>
 
+
+<p>
+cpphs-1.15, release date 2012.11.30<br>
+By HTTP:
+<a href="http://code.haskell.org/cpphs/cpphs-1.15.tar.gz">.tar.gz</a>,
+<a href="http://hackage.haskell.org/package/cpphs">Hackage</a>.
+<ul>
+<li> Fix the interaction of --nomacro with --strip.
+<li> Fix the error message received when # appears without a command.
+</ul>
 
 <p>
 cpphs-1.14, release date 2012.07.11<br>
diff --git a/tests/emptyhashes b/tests/emptyhashes
deleted file mode 100644
--- a/tests/emptyhashes
+++ /dev/null
@@ -1,5 +0,0 @@
-this is a test with a hash on a line of its own
-#
-with no command after it.
-#define FOO
-and ending here
diff --git a/tests/tmp b/tests/tmp
deleted file mode 100644
--- a/tests/tmp
+++ /dev/null
@@ -1,7 +0,0 @@
-#line 1 "nomacro"
-This file is intended to show the interaction of --nomacro with --strip
-which was broken up until cpphs-1.14.
-
-Here is a line with some comment          
-Here is a line with some C89 comment               with more text after it.
-Here is a line that uses FOO but it should look like uppercase foo, not 1.
