diff --git a/books/axiom.sty b/books/axiom.sty
index 6efebf5..e84fc2e 100644
--- a/books/axiom.sty
+++ b/books/axiom.sty
@@ -235,7 +235,7 @@
 %%
 
 \newcommand{\defvar}[1]{% e.g. \defvar{varname}
-\subsection{defvar \${#1}}%
+\subsection{defvar {#1}}%
 \label{#1}%
 \index{#1}%
 \index{defvar!#1}%
@@ -323,11 +323,24 @@
 %%   {\bf mkprompt} : {\bf Void} $->$ {\bf String}
 %% which formats to
 %%   mkprompt : Void -> String
-%% and an index of mkprompt under signatures
 %%
+%% and an index of mkprompt under signatures in the index.
+%%
+%% This macro also writes the signature to the ``sigfile'' which
+%% must be opened after the begin{document} with the command
+%% \immediate\openout\sigfile=signatures.tex
+%% (see bookheader.tex)
+%%
+%% the signature.tex file is read in later and added to the
+%% final document with the command
+%% \input{signatures.tex}
 
 \newcommand{\sig}[3]{% e.g. \sig{thisfunc}{In}{Out}
-\newline{\bf #1} : {\bf #2} $\rightarrow$ {\bf #3}%
+\hfill{}\newline{}{\bf #1} : {\bf #2} $\rightarrow$ {\bf #3}%
+\immediate\write\sigfile{%
+\unexpanded{\hyperpage}\@charlb\thepage\@charrb\quad%
+ #1 : #2 $\rightarrow$ #3}%
+\immediate\write\sigfile{}%
 \index{signatures!#1}}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/books/bookheader.tex b/books/bookheader.tex
index 026549f..9f20387 100644
--- a/books/bookheader.tex
+++ b/books/bookheader.tex
@@ -8,8 +8,10 @@ citecolor=red}
 \makeindex
 \usepackage{graphicx}
 \usepackage{changepage} % for adjustwidth environment
+\newwrite\sigfile
 
 \begin{document}
+\immediate\openout\sigfile=signatures.tex
 \frontmatter
 \setcounter{secnumdepth}{1}
 \begin{titlepage}
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index e95ce54..1b47f33 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -6077,6 +6077,7 @@ caution.
 \end{itemize}
 Notice that all but two paths (a null input or a ``)fi'' or a ``)fin'')
 will end up as a recursive call to ourselves.
+
 \throws{intloopReadConsole}{top-level}
 \calls{intloopReadConsole}{serverReadLine}
 \calls{intloopReadConsole}{leaveScratchpad}
@@ -8028,7 +8029,7 @@ and constructs a call to \bfref{Delay}.
 \calls{incLude}{Delay}
 \calls{include}{incLude1}
 \label{incLude}
-\sig{incLude}{(Int,List(String),Int,List(String),List(Int)}{Delay}
+\sig{incLude}{(Int,List(String),Int,List(String),List(Int))}{Delay}
 \begin{chunk}{defun incLude}
 (defun |incLude| (eb ss ln ufos states) 
  (|Delay| #'|incLude1| (list eb ss ln ufos states)))
@@ -61401,6 +61402,11 @@ This is part of the undo mechanism.
 
 \eject
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Signatures}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\immediate\closeout\sigfile
+\input{signatures.tex}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \chapter{Bibliography}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \bibliographystyle{axiom}
diff --git a/changelog b/changelog
index 7943c4f..b757ab1 100644
--- a/changelog
+++ b/changelog
@@ -1,5 +1,10 @@
+20141215 tpd src/axiom-website/patches.html 20141215.02.tpd.patch
+20141215 tpd books/bookvol5 add signatures chapter
+20141215 tpd books/bookheader.tex open signatures.tex file in preamble
+20141215 tpd books/axiom.sty make \sig write lisp signatures
 20141215 tpd src/axiom-website/patches.html 20141215.01.tpd.patch
 20141215 tpd books/bookvol5 merge from vmlisp.lisp, treeshake 
+20141215 tpd src/interp/vmlisp.lisp merge from vmlisp.lisp, treeshake 
 20141214 rrr src/axiom-website/patches.html 20141214.01.rrr.patch
 20141214 rrr buglist: bug 7272: )savesystem does not build a restorable session
 20141214 rrr Raymond Rogers <raymond.rogers72@gmail.com>
diff --git a/patch b/patch
index 091a543..8d09713 100644
--- a/patch
+++ b/patch
@@ -1,4 +1,7 @@
-books/bookvol5 merge from vmlisp.lisp, treeshake 
+books/axiom.sty make \sig write lisp signatures
 
-Move some code from vmlisp.lisp to bookvol5.
-Find missing functions and variables, add them to bookvol5
+\sig{functionname}{domain}{range} will write the signature
+inline in the text, add the functionname with a hyperref to 
+the page in the index, and add a hyperref and signature to
+the signatures.tex file. The signatures.tex file is now
+included as a separate chapter listing all function signatures.
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index f87d24d..88d7c12 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4812,6 +4812,8 @@ projects: progress report for week ending 12/13/14<br/>
 buglist: bug 7272: )savesystem does not build a restorable session<br/>
 <a href="patches/20141215.01.tpd.patch">20141215.01.tpd.patch</a>
 books/bookvol5 merge from vmlisp.lisp, treeshake<br/>
+<a href="patches/20141215.02.tpd.patch">20141215.02.tpd.patch</a>
+books/axiom.sty make \sig write lisp signatures<br/>
  </body>
 </html>
 
