diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index e452b15..dfd6569 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -118327,6 +118327,94 @@ ParametricSurfaceFunctions2(CF1: Type, CF2:Type): with
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package PFRPAC PartialFractionPackage}
+<<PartialFractionPackage.input>>=
+)set break resume
+)spool PartialFractionPackage.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 4
+a:=x+1/(y+1)
+--R
+--R        x y + x + 1
+--R   (1)  -----------
+--R           y + 1
+--R                                            Type: Fraction Polynomial Integer
+--E 1
+
+--S 2 of 4
+partialFraction(a,y)$PFRPAC(INT)
+--R
+--R              1
+--R   (2)  x + -----
+--R            y + 1
+--R    Type: PartialFraction UnivariatePolynomial(y,Fraction Polynomial Integer)
+--E 2
+
+--S 3 of 4
+b:=y+1/(x+1)
+--R
+--R        (x + 1)y + 1
+--R   (3)  ------------
+--R            x + 1
+--R                                            Type: Fraction Polynomial Integer
+--E 3
+
+--S 4 of 4
+partialFraction(b,x)$PFRPAC(INT)
+--R
+--R              1
+--R   (4)  y + -----
+--R            x + 1
+--R    Type: PartialFraction UnivariatePolynomial(x,Fraction Polynomial Integer)
+--E 4
+
+)spool 
+)lisp (bye)
+ 
+@
+<<PartialFractionPackage.help>>=
+====================================================================
+PartialFractionPackage examples
+====================================================================
+
+When Axiom is given an expression such as:
+
+  a:=x+1/(y+1)
+
+it will end up with the result in Fraction Polynomial Integer.
+
+        x y + x + 1
+        -----------
+           y + 1
+
+We might want it in a partial fraction form. This can be done with:
+
+  partialFraction(a,y)$PFRPAC(INT)
+
+              1
+        x + -----
+            y + 1
+
+We can do the same thing with a different variable:
+
+  b:=y+1/(x+1)
+
+        (x + 1)y + 1
+        ------------
+            x + 1
+
+  partialFraction(b,x)$PFRPAC(INT)
+
+              1
+        y + -----
+            x + 1
+
+See Also:
+o )show PartialFractionPackage
+
+@
 \pagehead{PartialFractionPackage}{PFRPAC}
 \pagepic{ps/v104partialfractionpackage.ps}{PFRPAC}{1.00}
 
@@ -118352,40 +118440,43 @@ ParametricSurfaceFunctions2(CF1: Type, CF2:Type): with
 
 PartialFractionPackage(R): Cat == Capsule where
 --  R : UniqueFactorizationDomain -- not yet supported
-   R : Join(EuclideanDomain, CharacteristicZero)
-   FPR ==> Fraction Polynomial R
-   INDE ==> IndexedExponents Symbol
-   PR ==> Polynomial R
-   SUP ==> SparseUnivariatePolynomial
-   Cat == with
-      partialFraction: (FPR, Symbol) -> Any
-         ++ partialFraction(rf, var) returns the partial fraction decomposition
-         ++ of the rational function rf with respect to the variable var.
-      partialFraction: (PR, Factored PR, Symbol) -> Any
-         ++ partialFraction(num, facdenom, var) returns the partial fraction
-         ++ decomposition of the rational function whose numerator is num and
-         ++ whose factored denominator is facdenom with respect to the 
-         ++ variable var.
-   Capsule == add
-      partialFraction(rf, v) ==
-         df := factor(denom rf)$MultivariateFactorize(Symbol, INDE,R,PR)
-         partialFraction(numer rf, df, v)
-
-      makeSup(p:Polynomial R, v:Symbol) : SparseUnivariatePolynomial FPR ==
-         up := univariate(p,v)
-         map((z1:PR):FPR +-> z1::FPR,up)_
-           $UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR)
-
-      partialFraction(p, facq, v) ==
-         up := UnivariatePolynomial(v, Fraction Polynomial R)
-         fup := Factored up
-         ffact : List(Record(irr:up,pow:Integer))
-         ffact:=[[makeSup(u.factor,v) pretend up,u.exponent]
-                      for u in factors facq]
-         fcont:=makeSup(unit facq,v) pretend up
-         nflist:fup := fcont*(*/[primeFactor(ff.irr,ff.pow) for ff in ffact])
-         pfup:=partialFraction(makeSup(p,v) pretend up, nflist)$PartialFraction(up)
-         coerce(pfup)$AnyFunctions1(PartialFraction up)
+  R : Join(EuclideanDomain, CharacteristicZero)
+  FPR ==> Fraction Polynomial R
+  INDE ==> IndexedExponents Symbol
+  PR ==> Polynomial R
+  SUP ==> SparseUnivariatePolynomial
+  Cat == with
+    partialFraction: (FPR, Symbol) -> Any
+      ++ partialFraction(rf, var) returns the partial fraction decomposition
+      ++ of the rational function rf with respect to the variable var.
+      ++
+      ++X a:=x+1/(y+1)
+      ++X partialFraction(a,y)$PFRPAC(INT)
+    partialFraction: (PR, Factored PR, Symbol) -> Any
+      ++ partialFraction(num, facdenom, var) returns the partial fraction
+      ++ decomposition of the rational function whose numerator is num and
+      ++ whose factored denominator is facdenom with respect to the 
+      ++ variable var.
+  Capsule == add
+    partialFraction(rf, v) ==
+      df := factor(denom rf)$MultivariateFactorize(Symbol, INDE,R,PR)
+      partialFraction(numer rf, df, v)
+
+    makeSup(p:Polynomial R, v:Symbol) : SparseUnivariatePolynomial FPR ==
+      up := univariate(p,v)
+      map((z1:PR):FPR +-> z1::FPR,up)_
+        $UnivariatePolynomialCategoryFunctions2(PR, SUP PR, FPR, SUP FPR)
+
+    partialFraction(p, facq, v) ==
+      up := UnivariatePolynomial(v, Fraction Polynomial R)
+      fup := Factored up
+      ffact : List(Record(irr:up,pow:Integer))
+      ffact:=[[makeSup(u.factor,v) pretend up,u.exponent]
+                   for u in factors facq]
+      fcont:=makeSup(unit facq,v) pretend up
+      nflist:fup := fcont*(*/[primeFactor(ff.irr,ff.pow) for ff in ffact])
+      pfup:=partialFraction(makeSup(p,v) pretend up,nflist)$PartialFraction(up)
+      coerce(pfup)$AnyFunctions1(PartialFraction up)
 
 @
 <<PFRPAC.dotabb>>=
diff --git a/changelog b/changelog
index 8919c24..0e8816d 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20091030 tpd src/axiom-website/patches.html 20091030.03.tpd.patch
+20091030 tpd src/algebra/Makefile add PartialFractionPackage.help
+20091030 tpd books/bookvol10.4 document PartialFractionPackage
 20091030 tpd src/axiom-website/patches.html 20091030.02.tpd.patch
 20091030 tpd src/algebra/Makefile add OFMONOID.help
 20091030 tpd books/bookvol10.3 document OrderedFreeMonoid
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 808c021..d3951b0 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -16517,9 +16517,10 @@ SPADHELP=\
  ${HELP}/OrderedFreeMonoid.help \
  ${HELP}/OrderedVariableList.help \
  ${HELP}/OrderlyDifferentialPolynomial.help \
+ ${HELP}/PartialFraction.help \
+ ${HELP}/PartialFractionPackage.help \
  ${HELP}/PlaneAlgebraicCurvePlot.help \
  ${HELP}/Plot.help \
- ${HELP}/PartialFraction.help \
  ${HELP}/Permanent.help \
  ${HELP}/Permutation.help \
  ${HELP}/Polynomial.help \
@@ -16647,6 +16648,7 @@ REGRESS= Any.regress \
  OrderedVariableList.regress \
  OrderlyDifferentialPolynomial.regress \
  PartialFraction.regress \
+ PartialFractionPackage.regress \
  Permanent.regress \
  Permutation.regress \
  PlaneAlgebraicCurvePlot.regress \
@@ -17646,6 +17648,18 @@ ${HELP}/PartialFraction.help: ${BOOKS}/bookvol10.3.pamphlet
             >${INPUT}/PartialFraction.input
 	@echo "PartialFraction (PFR)" >>${HELPFILE}
 
+${HELP}/PartialFractionPackage.help: ${BOOKS}/bookvol10.4.pamphlet
+	@echo 7885 create PartialFractionPackage.help from \
+           ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R"PartialFractionPackage.help" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           >${HELP}/PartialFractionPackage.help
+	@cp ${HELP}/PartialFractionPackage.help ${HELP}/PFRPAC.help
+	@${TANGLE} -R"PartialFractionPackage.input" \
+            ${BOOKS}/bookvol10.4.pamphlet \
+            >${INPUT}/PartialFractionPackage.input
+	@echo "PartialFractionPackage (PFRPAC)" >>${HELPFILE}
+
 ${HELP}/Permanent.help: ${BOOKS}/bookvol10.4.pamphlet
 	@echo 7890 create Permanent.help from ${BOOKS}/bookvol10.4.pamphlet
 	@${TANGLE} -R"Permanent.help" ${BOOKS}/bookvol10.4.pamphlet \
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 6db18b6..fef7922 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2201,5 +2201,7 @@ src/input/numericgamma.input added<br/>
 src/input/donsimple.input added<br/>
 <a href="patches/20091030.02.tpd.patch">20091030.02.tpd.patch</a>
 books/bookvol10.3 document OrderedFreeMonoid<br/>
+<a href="patches/20091030.03.tpd.patch">20091030.03.tpd.patch</a>
+books/bookvol10.4 document PartialFractionPackage<br/>
  </body>
 </html>
