diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index c1e57d5..3d91061 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -111267,6 +111267,404 @@ UnivariateTaylorSeries(Coef,var,cen): Exports == Implementation where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain UTSZ UnivariateTaylorSeriesCZero}
+<<UnivariateTaylorSeriesCZero.input>>=
+)set break resume
+)sys rm -f UnivariateTaylorSeriesCZero.output
+)spool UnivariateTaylorSeriesCZero.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show UnivariateTaylorSeriesCZero
+--R UnivariateTaylorSeriesCZero(Coef: Ring,var: Symbol)  is a domain constructor
+--R Abbreviation for UnivariateTaylorSeriesCZero is UTSZ 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for UTSZ 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
+--R coefficients : % -> Stream Coef       coerce : Variable var -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complete : % -> %                     degree : % -> NonNegativeInteger
+--R evenlambert : % -> %                  hash : % -> SingleInteger
+--R lagrange : % -> %                     lambert : % -> %
+--R latex : % -> String                   leadingCoefficient : % -> Coef
+--R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
+--R monomial? : % -> Boolean              oddlambert : % -> %
+--R one? : % -> Boolean                   order : % -> NonNegativeInteger
+--R pole? : % -> Boolean                  quoByVar : % -> %
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R revert : % -> %                       sample : () -> %
+--R series : Stream Coef -> %             variable : % -> Symbol
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?*? : (%,Fraction Integer) -> % if Coef has ALGEBRA FRAC INT
+--R ?*? : (Fraction Integer,%) -> % if Coef has ALGEBRA FRAC INT
+--R ?*? : (NonNegativeInteger,%) -> %
+--R ?**? : (%,Fraction Integer) -> % if Coef has ALGEBRA FRAC INT
+--R ?**? : (%,%) -> % if Coef has ALGEBRA FRAC INT
+--R ?**? : (%,Coef) -> % if Coef has FIELD
+--R ?**? : (%,NonNegativeInteger) -> %
+--R ?/? : (%,Coef) -> % if Coef has FIELD
+--R D : % -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
+--R D : (%,NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
+--R D : (%,Symbol) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R D : (%,List Symbol) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R D : (%,Symbol,NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R D : (%,List Symbol,List NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R ?^? : (%,NonNegativeInteger) -> %
+--R acos : % -> % if Coef has ALGEBRA FRAC INT
+--R acosh : % -> % if Coef has ALGEBRA FRAC INT
+--R acot : % -> % if Coef has ALGEBRA FRAC INT
+--R acoth : % -> % if Coef has ALGEBRA FRAC INT
+--R acsc : % -> % if Coef has ALGEBRA FRAC INT
+--R acsch : % -> % if Coef has ALGEBRA FRAC INT
+--R approximate : (%,NonNegativeInteger) -> Coef if Coef has **: (Coef,NonNegativeInteger) -> Coef and Coef has coerce: Symbol -> Coef
+--R asec : % -> % if Coef has ALGEBRA FRAC INT
+--R asech : % -> % if Coef has ALGEBRA FRAC INT
+--R asin : % -> % if Coef has ALGEBRA FRAC INT
+--R asinh : % -> % if Coef has ALGEBRA FRAC INT
+--R associates? : (%,%) -> Boolean if Coef has INTDOM
+--R atan : % -> % if Coef has ALGEBRA FRAC INT
+--R atanh : % -> % if Coef has ALGEBRA FRAC INT
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
+--R coefficient : (%,NonNegativeInteger) -> Coef
+--R coerce : UnivariatePolynomial(var,Coef) -> %
+--R coerce : Coef -> % if Coef has COMRING
+--R coerce : % -> % if Coef has INTDOM
+--R coerce : Fraction Integer -> % if Coef has ALGEBRA FRAC INT
+--R cos : % -> % if Coef has ALGEBRA FRAC INT
+--R cosh : % -> % if Coef has ALGEBRA FRAC INT
+--R cot : % -> % if Coef has ALGEBRA FRAC INT
+--R coth : % -> % if Coef has ALGEBRA FRAC INT
+--R csc : % -> % if Coef has ALGEBRA FRAC INT
+--R csch : % -> % if Coef has ALGEBRA FRAC INT
+--R differentiate : (%,Variable var) -> %
+--R differentiate : % -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
+--R differentiate : (%,NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
+--R differentiate : (%,Symbol) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R differentiate : (%,List Symbol) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R differentiate : (%,List Symbol,List NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef and Coef has PDRING SYMBOL
+--R ?.? : (%,%) -> % if NonNegativeInteger has SGROUP
+--R ?.? : (%,NonNegativeInteger) -> Coef
+--R eval : (%,Coef) -> Stream Coef if Coef has **: (Coef,NonNegativeInteger) -> Coef
+--R exp : % -> % if Coef has ALGEBRA FRAC INT
+--R exquo : (%,%) -> Union(%,"failed") if Coef has INTDOM
+--R extend : (%,NonNegativeInteger) -> %
+--R generalLambert : (%,Integer,Integer) -> %
+--R integrate : (%,Variable var) -> % if Coef has ALGEBRA FRAC INT
+--R integrate : (%,Symbol) -> % if Coef has integrate: (Coef,Symbol) -> Coef and Coef has variables: Coef -> List Symbol and Coef has ALGEBRA FRAC INT or Coef has ACFS INT and Coef has ALGEBRA FRAC INT and Coef has PRIMCAT and Coef has TRANFUN
+--R integrate : % -> % if Coef has ALGEBRA FRAC INT
+--R invmultisect : (Integer,Integer,%) -> %
+--R log : % -> % if Coef has ALGEBRA FRAC INT
+--R monomial : (%,List SingletonAsOrderedSet,List NonNegativeInteger) -> %
+--R monomial : (%,SingletonAsOrderedSet,NonNegativeInteger) -> %
+--R monomial : (Coef,NonNegativeInteger) -> %
+--R multiplyCoefficients : ((Integer -> Coef),%) -> %
+--R multiplyExponents : (%,PositiveInteger) -> %
+--R multisect : (Integer,Integer,%) -> %
+--R nthRoot : (%,Integer) -> % if Coef has ALGEBRA FRAC INT
+--R order : (%,NonNegativeInteger) -> NonNegativeInteger
+--R pi : () -> % if Coef has ALGEBRA FRAC INT
+--R polynomial : (%,NonNegativeInteger,NonNegativeInteger) -> Polynomial Coef
+--R polynomial : (%,NonNegativeInteger) -> Polynomial Coef
+--R sec : % -> % if Coef has ALGEBRA FRAC INT
+--R sech : % -> % if Coef has ALGEBRA FRAC INT
+--R series : Stream Record(k: NonNegativeInteger,c: Coef) -> %
+--R sin : % -> % if Coef has ALGEBRA FRAC INT
+--R sinh : % -> % if Coef has ALGEBRA FRAC INT
+--R sqrt : % -> % if Coef has ALGEBRA FRAC INT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R tan : % -> % if Coef has ALGEBRA FRAC INT
+--R tanh : % -> % if Coef has ALGEBRA FRAC INT
+--R terms : % -> Stream Record(k: NonNegativeInteger,c: Coef)
+--R truncate : (%,NonNegativeInteger,NonNegativeInteger) -> %
+--R truncate : (%,NonNegativeInteger) -> %
+--R unit? : % -> Boolean if Coef has INTDOM
+--R unitCanonical : % -> % if Coef has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if Coef has INTDOM
+--R univariatePolynomial : (%,NonNegativeInteger) -> UnivariatePolynomial(var,Coef)
+--R variables : % -> List SingletonAsOrderedSet
+--R
+--E 1
+
+)spool
+)lisp (bye)
+@
+<<UnivariateTaylorSeriesCZero.help>>=
+====================================================================
+UnivariateTaylorSeriesCZero examples
+====================================================================
+
+See Also:
+o )show UnivariateTaylorSeriesCZero
+
+@
+\pagehead{UnivariateTaylorSeriesCZero}{UTSZ}
+\pagepic{ps/v103univariatetaylorseriesczero.ps}{UTSZ}{1.00}
+{\bf See}\\
+\pageto{InnerTaylorSeries}{ITAYLOR}
+
+{\bf Exports:}\\
+\begin{tabular}{llll}
+\cross{UTSZ}{0} 
+\end{tabular}
+
+<<domain UTSZ UnivariateTaylorSeriesCZero>>=
+)abbrev domain UTSZ UnivariateTaylorSeriesCZero
+++ Author: Gaetan Hache
+++ Date Created: September 1996
+++ Date Last Updated: April, 2010, by Tim Daly
+++ Description:
+++ Part of the Package for Algebraic Function Fields in one variable PAFF
+
+UnivariateTaylorSeriesCZero(Coef,var): Exports == Implementation where
+  Coef :  Ring
+  var  :  Symbol
+  I    ==> Integer
+  NNI  ==> NonNegativeInteger
+  P    ==> Polynomial Coef
+  RN   ==> Fraction Integer
+  ST   ==> Stream
+  STT  ==> StreamTaylorSeriesOperations Coef
+  TERM ==> Record(k:NNI,c:Coef)
+  UP   ==> UnivariatePolynomial(var,Coef)
+  Exports ==> UnivariateTaylorSeriesCategory(Coef) with
+    coerce: UP -> %
+      ++\spad{coerce(p)} converts a univariate polynomial p in the variable
+      ++\spad{var} to a univariate Taylor series in \spad{var}.
+    univariatePolynomial: (%,NNI) -> UP
+      ++\spad{univariatePolynomial(f,k)} returns a univariate polynomial
+      ++ consisting of the sum of all terms of f of degree \spad{<= k}.
+    coerce: Variable(var) -> %
+      ++\spad{coerce(var)} converts the series variable \spad{var} into a
+      ++ Taylor series.
+    differentiate: (%,Variable(var)) -> %
+      ++ \spad{differentiate(f(x),x)} computes the derivative of
+      ++ \spad{f(x)} with respect to \spad{x}.
+    lagrange: % -> %
+      ++\spad{lagrange(g(x))} produces the Taylor series for \spad{f(x)}
+      ++ where \spad{f(x)} is implicitly defined as \spad{f(x) = x*g(f(x))}.
+    lambert: % -> %
+      ++\spad{lambert(f(x))} returns \spad{f(x) + f(x^2) + f(x^3) + ...}.
+      ++ This function is used for computing infinite products.
+      ++ \spad{f(x)} should have zero constant coefficient.
+      ++ If \spad{f(x)} is a Taylor series with constant term 1, then
+      ++ \spad{product(n = 1..infinity,f(x^n)) = exp(log(lambert(f(x))))}.
+    oddlambert: % -> %
+      ++\spad{oddlambert(f(x))} returns \spad{f(x) + f(x^3) + f(x^5) + ...}.
+      ++ \spad{f(x)} should have a zero constant coefficient.
+      ++ This function is used for computing infinite products.
+      ++ If \spad{f(x)} is a Taylor series with constant term 1, then
+      ++ \spad{product(n=1..infinity,f(x^(2*n-1)))=exp(log(oddlambert(f(x))))}.
+    evenlambert: % -> %
+      ++\spad{evenlambert(f(x))} returns \spad{f(x^2) + f(x^4) + f(x^6) + ...}.
+      ++ \spad{f(x)} should have a zero constant coefficient.
+      ++ This function is used for computing infinite products.
+      ++ If \spad{f(x)} is a Taylor series with constant term 1, then
+      ++ \spad{product(n=1..infinity,f(x^(2*n)))=exp(log(evenlambert(f(x))))}.
+    generalLambert: (%,I,I) -> %
+      ++\spad{generalLambert(f(x),a,d)} returns \spad{f(x^a) + f(x^(a + d)) +
+      ++ f(x^(a + 2 d)) + ... }. \spad{f(x)} should have zero constant
+      ++ coefficient and \spad{a} and d should be positive.
+    revert: % -> %
+      ++ \spad{revert(f(x))} returns a Taylor series \spad{g(x)} such that
+      ++ \spad{f(g(x)) = g(f(x)) = x}. Series \spad{f(x)} should have constant
+      ++ coefficient 0 and 1st order coefficient 1.
+    multisect: (I,I,%) -> %
+      ++\spad{multisect(a,b,f(x))} selects the coefficients of
+      ++ \spad{x^((a+b)*n+a)}, and changes this monomial to \spad{x^n}.
+    invmultisect: (I,I,%) -> %
+      ++\spad{invmultisect(a,b,f(x))} substitutes \spad{x^((a+b)*n)}
+      ++ for \spad{x^n} and multiples by \spad{x^b}.
+    if Coef has Algebra Fraction Integer then
+      integrate: (%,Variable(var)) -> %
+        ++ \spad{integrate(f(x),x)} returns an anti-derivative of the power
+        ++ series \spad{f(x)} with constant coefficient 0.
+        ++ We may integrate a series when we can divide coefficients
+        ++ by integers.
+
+  Implementation ==> InnerTaylorSeries(Coef) add
+
+    Rep := Stream Coef
+
+    --% creation and destruction of series
+
+    stream: % -> Stream Coef
+    stream x  == x pretend Stream(Coef)
+
+    coerce(v:Variable(var)) ==
+      monomial(1,1)
+      
+    coerce(n:I)    == n :: Coef :: %
+    coerce(r:Coef) == coerce(r)$STT
+    monomial(c,n)  == monom(c,n)$STT
+
+    getExpon: TERM -> NNI
+    getExpon term == term.k
+    getCoef: TERM -> Coef
+    getCoef term == term.c
+    rec: (NNI,Coef) -> TERM
+    rec(expon,coef) == [expon,coef]
+
+    recs: (ST Coef,NNI) -> ST TERM
+    recs(st,n) == delay$ST(TERM)
+      empty? st => empty()
+      zero? (coef := frst st) => recs(rst st,n + 1)
+      concat(rec(n,coef),recs(rst st,n + 1))
+
+    terms x == recs(stream x,0)
+
+    recsToCoefs: (ST TERM,NNI) -> ST Coef
+    recsToCoefs(st,n) == delay
+      empty? st => empty()
+      term := frst st; expon := getExpon term
+      n = expon => concat(getCoef term,recsToCoefs(rst st,n + 1))
+      concat(0,recsToCoefs(st,n + 1))
+
+    series(st: ST TERM) == recsToCoefs(st,0)
+
+    stToPoly: (ST Coef,P,NNI,NNI) -> P
+    stToPoly(st,term,n,n0) ==
+      (n > n0) or (empty? st) => 0
+      frst(st) * term ** n + stToPoly(rst st,term,n + 1,n0)
+
+    polynomial(x,n) == stToPoly(stream x,(var :: P),0,n)
+
+    polynomial(x,n1,n2) ==
+      if n1 > n2 then (n1,n2) := (n2,n1)
+      stToPoly(rest(stream x,n1),(var :: P),n1,n2)
+
+    stToUPoly: (ST Coef,UP,NNI,NNI) -> UP
+    stToUPoly(st,term,n,n0) ==
+      (n > n0) or (empty? st) => 0
+      frst(st) * term ** n + stToUPoly(rst st,term,n + 1,n0)
+
+    univariatePolynomial(x,n) ==
+      stToUPoly(stream x,monomial(1,1)$UP,0,n)
+
+    coerce(p:UP) ==
+      zero? p => 0
+      st : ST Coef := empty()
+      oldDeg : NNI := degree(p) + 1
+      while not zero? p repeat
+        deg := degree p
+        delta := (oldDeg - deg - 1) :: NNI
+        for i in 1..delta repeat st := concat(0$Coef,st)
+        st := concat(leadingCoefficient p,st)
+        oldDeg := deg; p := reductum p
+      for i in 1..oldDeg repeat st := concat(0$Coef,st)
+      st
+
+    if Coef has coerce: Symbol -> Coef then
+      if Coef has "**": (Coef,NNI) -> Coef then
+
+        stToCoef: (ST Coef,Coef,NNI,NNI) -> Coef
+        stToCoef(st,term,n,n0) ==
+          (n > n0) or (empty? st) => 0
+          frst(st) * term ** n + stToCoef(rst st,term,n + 1,n0)
+
+        approximate(x,n) ==
+          stToCoef(stream x,(var :: Coef),0,n)
+
+--% values
+
+    variable x == var
+    center   x == 0$Coef
+    
+    coefficient(x,n) ==
+       -- Cannot use elt!  Should return 0 if stream doesn't have it.
+       u := stream x
+       while not empty? u and n > 0 repeat
+         u := rst u
+         n := (n - 1) :: NNI
+       empty? u or n ^= 0 => 0
+       frst u
+
+    elt(x:%,n:NNI) == coefficient(x,n)
+
+--% functions
+
+    map(f,x) == map(f,x)$Rep
+    eval(x:%,r:Coef) == eval(stream x,r)$STT
+    differentiate x == deriv(stream x)$STT
+    differentiate(x:%,v:Variable(var)) == differentiate x
+    if Coef has PartialDifferentialRing(Symbol) then
+      differentiate(x:%,s:Symbol) ==
+        (s = variable(x)) => differentiate x
+        map(differentiate(#1,s),x) - differentiate(0,s)*differentiate(x)
+    multiplyCoefficients(f,x) == gderiv(f,stream x)$STT
+    lagrange x == lagrange(stream x)$STT
+    lambert x == lambert(stream x)$STT
+    oddlambert x == oddlambert(stream x)$STT
+    evenlambert x == evenlambert(stream x)$STT
+    generalLambert(x:%,a:I,d:I) == generalLambert(stream x,a,d)$STT
+    extend(x,n) == extend(x,n+1)$Rep
+    complete x == complete(x)$Rep
+    truncate(x,n) == first(stream x,n + 1)$Rep
+    truncate(x,n1,n2) ==
+      if n2 < n1 then (n1,n2) := (n2,n1)
+      m := (n2 - n1) :: NNI
+      st := first(rest(stream x,n1)$Rep,m + 1)$Rep
+      for i in 1..n1 repeat st := concat(0$Coef,st)
+      st
+    elt(x:%,y:%) == compose(stream x,stream y)$STT
+    revert x == revert(stream x)$STT
+    multisect(a,b,x) == multisect(a,b,stream x)$STT
+    invmultisect(a,b,x) == invmultisect(a,b,stream x)$STT
+    multiplyExponents(x,n) == invmultisect(n,0,x)
+    quoByVar x == (empty? x => 0; rst x)
+    if Coef has IntegralDomain then
+      unit? x == unit? coefficient(x,0)
+    if Coef has Field then
+      if Coef is RN then
+        (x:%) ** (s:Coef) == powern(s,stream x)$STT
+      else
+        (x:%) ** (s:Coef) == power(s,stream x)$STT
+
+    if Coef has Algebra Fraction Integer then
+      coerce(r:RN) == r :: Coef :: %
+
+      integrate x == integrate(0,stream x)$STT
+      integrate(x:%,v:Variable(var)) == integrate x
+
+      if Coef has integrate: (Coef,Symbol) -> Coef and _
+         Coef has variables: Coef -> List Symbol then
+        integrate(x:%,s:Symbol) ==
+          (s = variable(x)) => integrate x
+          map(integrate(#1,s),x)
+          
+      if Coef has TranscendentalFunctionCategory and _
+	 Coef has PrimitiveFunctionCategory and _
+         Coef has AlgebraicallyClosedFunctionSpace Integer then
+
+        integrateWithOneAnswer: (Coef,Symbol) -> Coef
+        integrateWithOneAnswer(f,s) ==
+          res := integrate(f,s)$FunctionSpaceIntegration(I,Coef)
+          res case Coef => res :: Coef
+          first(res :: List Coef)
+
+        integrate(x:%,s:Symbol) ==
+          (s = variable(x)) => integrate x
+          map(integrateWithOneAnswer(#1,s),x)
+
+@
+<<UTSZ.dotabb>>=
+"UTSZ" [color="#88FF44",href="bookvol10.3.pdf#nameddest=UTSZ"]
+"ACFS" [color="#4488FF",href="bookvol10.2.pdf#nameddest=ACFS"]
+"UTSZ" -> "ACFS"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain UNISEG UniversalSegment}
 <<UniversalSegment.input>>=
 )set break resume
@@ -122243,6 +122641,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain UPXSSING UnivariatePuiseuxSeriesWithExponentialSingularity>>
 <<domain OREUP UnivariateSkewPolynomial>>
 <<domain UTS UnivariateTaylorSeries>>
+<<domain UTSZ UnivariateTaylorSeriesCZero>>
 <<domain UNISEG UniversalSegment>>
 
 <<domain VARIABLE Variable>>
diff --git a/changelog b/changelog
index 3a443a9..0aac8af 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20100418 tpd src/axiom-website/patches.html 20100418.04.tpd.patch
+20100418 tpd src/algebra/Makefile add UnivariateTaylorSeriesCZero
+20100418 tpd books/bookvol10.3 add UnivariateTaylorSeriesCZero
 20100418 tpd src/axiom-website/patches.html 20100418.03.tpd.patch
 20100418 tpd books/Makefile add Axiom Bibliography book
 20100418 tpd books/bookvolbib add Axiom Bibliography book
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 484a13e..14ff66f 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -14365,6 +14365,7 @@ LAYER18=\
   ${OUT}/RGCHAIN.o  ${OUT}/RSDCMPK.o  ${OUT}/SFRTCAT.o  ${OUT}/SOLVERAD.o \
   ${OUT}/SULS.o     ${OUT}/SUPXS.o    ${OUT}/UFPS1.o    ${OUT}/ULS.o      \
   ${OUT}/ULSCONS.o  ${OUT}/UPXS.o     ${OUT}/UPXSCONS.o ${OUT}/UTS.o      \
+  ${OUT}/UTSZ.o \
   layer18done
 
 @
@@ -15122,6 +15123,23 @@ LAYER18=\
 "UTS" -> "ACFS"
 /*"UTS" -> {"ACF"; "FS"; "ES"; "FRETRCT"; "GROUP"; "OAMONS"}*/
 
+/*"UTSZ" -> {"UTSCAT"; "UPSCAT"; "PSCAT"; "AMR"; "RING"; "RNG"; "ABELGRP"}*/
+/*"UTSZ" -> {"CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"}*/
+/*"UTSZ" -> {"SGROUP"; "MONOID"; "LMODULE"; "BMODULE"; "RMODULE"}*/
+/*"UTSZ" -> {"COMRING"; "ALGEBRA"; "MODULE"; "CHARZ"; "CHARNZ"; "INTDOM"}*/
+/*"UTSZ" -> {"ENTIRER"; "ELTAB"; "DIFRING"; "PDRING"; "RADCAT"; "TRANFUN"}*/
+/*"UTSZ" -> {"TRIGCAT"; "ATRIG"; "HYPCAT"; "AHYP"; "ELEMFUN"; "NNI"; "INT"}*/
+/*"UTSZ" -> {"BOOLEAN"; "SINT"; "PI"; "SYMBOL"; "REF"; "ALIST"; "LIST"}*/
+/*"UTSZ" -> {"STRING"; "CHAR"; "OUTFORM"; "PRIMARR"; "A1AGG-"; "ISTRING"}*/
+/*"UTSZ" -> {"SRAGG"; "FLAGG-"; "LNAGG-"; "FIELD"; "EUCDOM"; "PID"; "GCDDOM"}*/
+/*"UTSZ" -> {"UFD"; "DIVRING"; "INS"; "OINTDOM"; "ORDRING"; "OAGROUP"}*/
+/*"UTSZ" -> {"OCAMON.o"; "OAMON"; "OASGP"; "ORDSET"; "KONVERT"; "RETRACT"}*/
+/*"UTSZ" -> {"LINEXP"; "PATMAB"; "CFCAT"; "REAL"; "STEP"; "QFCAT"; "FEVALAB"}*/
+/*"UTSZ" -> {"EVALAB"; "IEVALAB"; "DIFEXT"; "FLINEXP"; "PATAB"; "FPATMAB"}*/
+/*"UTSZ" -> {"TYPE"; "PFECAT"; "OM"; "PRIMCAT"}*/
+"UTSZ" -> "ACFS"
+/*"UTSZ" -> {"ACF"; "FS"; "ES"; "FRETRCT"; "GROUP"; "ILIST"; "OAMONS"}*/
+
 @
 \subsection{Layer19}
 Depends on: EXPRSOL SFRTCAT\\
@@ -16551,6 +16569,7 @@ SPADHELP=\
  ${HELP}/TwoDimensionalViewport.help \
  ${HELP}/UnivariateSkewPolynomial.help \
  ${HELP}/UnivariatePolynomial.help \
+ ${HELP}/UnivariateTaylorSeriesCZero.help \
  ${HELP}/UniversalSegment.help \
  ${HELP}/Vector.help \
  ${HELP}/Void.help \
@@ -16689,6 +16708,7 @@ REGRESS= \
  TwoDimensionalArray.regress \
  UnivariateSkewPolynomial.regress \
  UnivariatePolynomial.regress \
+ UnivariateTaylorSeriesCZero.regress \
  UniversalSegment.regress \
  Vector.regress \
  Void.regress \
@@ -18069,6 +18089,18 @@ ${HELP}/UnivariateSkewPolynomial.help: ${BOOKS}/bookvol10.3.pamphlet
             >${INPUT}/UnivariateSkewPolynomial.input
 	@echo "UnivariateSkewPolynomial (OREUP)" >>${HELPFILE}
 
+${HELP}/UnivariateTaylorSeriesCZero.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 8195 create UnivariateTaylorSeriesCZero.help from \
+           ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R"UnivariateTaylorSeriesCZero.help" \
+           ${BOOKS}/bookvol10.3.pamphlet \
+           >${HELP}/UnivariateTaylorSeriesCZero.help
+	@cp ${HELP}/UnivariateTaylorSeriesCZero.help ${HELP}/UTSZ.help
+	@${TANGLE} -R"UnivariateTaylorSeriesCZero.input" \
+            ${BOOKS}/bookvol10.3.pamphlet \
+            >${INPUT}/UnivariateTaylorSeriesCZero.input
+	@echo "UnivariateTaylorSeriesCZero (UTSZ)" >>${HELPFILE}
+
 ${HELP}/UniversalSegment.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 8200 create UniversalSegment.help from \
            ${BOOKS}/bookvol10.3.pamphlet
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 212d8c2..abc1f30 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2633,5 +2633,7 @@ books/bookvol10.5 add BLAS1 dcopy<br/>
 add src/input/liska.input add liska test suite<br/>
 <a href="patches/20100418.03.tpd.patch">20100418.03.tpd.patch</a>
 books/bookvolbib add Axiom Bibliography book<br/>
+<a href="patches/20100418.04.tpd.patch">20100418.04.tpd.patch</a>
+books/bookvol10.3 add UnivariateTaylorSeriesCZero<br/>
  </body>
 </html>
