diff --git a/changelog b/changelog
index 21958ab..46dc9dc 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20071004 tpd src/input/Makefile kamke0.input regression test added
+20071004 tpd src/input/kamke0.input ODE regression test added
 20071001 tpd src/algebra/exposed.lisp add (|AxiomServer| . AXSERV) to basic
 20071001 tpd src/algebra/Makefile add axserver.spad
 20071001 acr src/algebra/axserver.spad axserver socket connection code
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index f62095a..c1ade3e 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -322,6 +322,7 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     intmix2.regress   intmix.regress   int.regress      intrf.regress \
     iprntpk.regress \
     ipftest.regress   is.regress       isprime.regress  kafile.regress \
+    kamke0.regress \
     kernel.regress    knot2.regress    kovacic.regress  kuipers.regress \
     laplace.regress   leg.regress      limit.regress    lindep.regress \
     list.regress      lode.regress     lodesys.regress  lodo1.regress \
@@ -556,11 +557,12 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/images3.input  ${OUT}/images6.input    ${OUT}/images6a.input \
        ${OUT}/images7.input  ${OUT}/images7a.input   ${OUT}/infprod.input \
        ${OUT}/intaf.input    ${OUT}/intbypart.input \
-       ${OUT}/intdeq.input     ${OUT}/intef.input \
+       ${OUT}/intdeq.input   ${OUT}/intef.input \
        ${OUT}/intg0.input    ${OUT}/intheory.input   ${OUT}/int.input \
        ${OUT}/intlf.input    ${OUT}/intmix.input     ${OUT}/intrf.input \
        ${OUT}/ipftest.input  ${OUT}/is.input         ${OUT}/isprime.input \
-       ${OUT}/kafile.input   ${OUT}/kernel.input     ${OUT}/knot.input \
+       ${OUT}/kafile.input   ${OUT}/kamke0.input \
+       ${OUT}/kernel.input   ${OUT}/knot.input \
        ${OUT}/kovacic.input  ${OUT}/kuipers.input  \
        ${OUT}/laplace.input  ${OUT}/leg.input        ${OUT}/lexp.input \
        ${OUT}/lextripk.input ${OUT}/lib.input        ${OUT}/limit.input \
@@ -825,6 +827,7 @@ DOCFILES= \
   ${DOC}/intmix.input.dvi      ${DOC}/intrf.input.dvi      \
   ${DOC}/ipftest.input.dvi     ${DOC}/is.input.dvi         \
   ${DOC}/isprime.input.dvi     ${DOC}/kafile.input.dvi     \
+  ${DOC}/kamke0.input.dvi \
   ${DOC}/kernel.input.dvi      ${DOC}/knot2.input.dvi      \
   ${DOC}/knot.input.dvi        ${DOC}/knownbugs.input.dvi  \
   ${DOC}/kovacic.input.dvi     ${DOC}/kuipers.input.dvi    \
diff --git a/src/input/kamke0.input.pamphlet b/src/input/kamke0.input.pamphlet
new file mode 100644
index 0000000..d1a9d8b
--- /dev/null
+++ b/src/input/kamke0.input.pamphlet
@@ -0,0 +1,1904 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input kamke0.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+This is the first 50 of the Kamke test suite as published by 
+E. S. Cheb-Terrab\cite{1}. They have been rewritten using Axiom
+syntax. Where possible we show that the particular solution actually
+satisfies the original ordinary differential equation.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+)spool kamke0.output
+)set break resume
+)set mes auto off
+)clear all
+
+--S 1 of 134
+y:=operator 'y
+--R 
+--R
+--R   (1)  y
+--R                                                          Type: BasicOperator
+--E 1
+
+--S 2 of 134
+f := operator 'f
+--R
+--R   (2)  f
+--R                                                          Type: BasicOperator
+--E 2
+
+--S 3 of 134
+g := operator 'g
+--R
+--R   (3)  g
+--R                                                          Type: BasicOperator
+--E 3
+
+--S 4 of 134
+ode1 := D(y(x),x) - (a4*x**4+a3*x**3+a2*x**2+a1*x+a0)**(-1/2)
+--R 
+--R
+--R         +---------------------------------+
+--R         |    4       3       2              ,
+--R        \|a4 x  + a3 x  + a2 x  + a1 x + a0 y (x) - 1
+--R
+--R   (4)  ---------------------------------------------
+--R              +---------------------------------+
+--R              |    4       3       2
+--R             \|a4 x  + a3 x  + a2 x  + a1 x + a0
+--R                                                     Type: Expression Integer
+--E 4
+
+--S 5 of 134
+ode1a:=solve(ode1,y,x)
+--R 
+--R
+--R   (5)
+--R                   x
+--R                 ++                    1
+--I   [particular=  |   ------------------------------------- d%N ,basis= [1]]
+--R                ++    +----------------------------------+
+--R                      |  4       3       2
+--I                     \|%N a4 + %N a3 + %N a2 + %N a1 + a0
+--RType: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+--E 5
+
+--S 6 of 134
+ode2 := D(y(x),x) + a*y(x) - c*exp(b*x)
+--R 
+--R
+--R         ,          b x
+--R   (6)  y (x) - c %e    + a y(x)
+--R
+--R                                                     Type: Expression Integer
+--E 6
+
+--S 7 of 134
+ode2a:=solve(ode2,y,x)
+--R 
+--R
+--R                         b x
+--R                     c %e              - a x
+--R   (7)  [particular= -------,basis= [%e     ]]
+--R                      b + a
+--RType: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+--E 7
+
+--S 8 of 134
+yx:=ode2a.particular
+--R
+--R            b x
+--R        c %e
+--R   (8)  -------
+--R         b + a
+--R                                                     Type: Expression I