diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index 8aa65a3..d873759 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -22298,6 +22298,262 @@ DistributedMultivariatePolynomial(vl,R): public == private where
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{domain DIV Divisor}
+<<Divisor.input>>=
+)set break resume
+)sys rm -f Divisor.output
+)spool Divisor.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show Divisor
+--R Divisor S: SetCategoryWithDegree  is a domain constructor
+--R Abbreviation for Divisor is DIV 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for DIV 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Integer,S) -> %                ?*? : (Integer,%) -> %
+--R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coefficient : (S,%) -> Integer        coerce : S -> %
+--R coerce : % -> OutputForm              collect : % -> %
+--R concat : (%,%) -> %                   degree : % -> Integer
+--R divOfPole : % -> %                    divOfZero : % -> %
+--R effective? : % -> Boolean             hash : % -> SingleInteger
+--R incr : % -> %                         latex : % -> String
+--R mapGen : ((S -> S),%) -> %            nthCoef : (%,Integer) -> Integer
+--R nthFactor : (%,Integer) -> S          reductum : % -> %
+--R retract : % -> S                      sample : () -> %
+--R size : % -> NonNegativeInteger        split : % -> List %
+--R supp : % -> List S                    suppOfPole : % -> List S
+--R suppOfZero : % -> List S              zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?*? : (NonNegativeInteger,%) -> %
+--R head : % -> Record(gen: S,exp: Integer)
+--R highCommonTerms : (%,%) -> % if Integer has OAMON
+--R mapCoef : ((Integer -> Integer),%) -> %
+--R retractIfCan : % -> Union(S,"failed")
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R terms : % -> List Record(gen: S,exp: Integer)
+--R
+--E 1
+
+)spool
+)lisp (bye)
+
+@
+<<Divisor.help>>=
+====================================================================
+Divisor examples
+====================================================================
+
+See Also:
+o )show Divisor
+
+@
+\pagehead{Divisor}{DIV}
+\pagepic{ps/v103divisor.ps}{DIV}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{llll}
+\cross{DIV}{0} &
+\cross{DIV}{-?} &
+\cross{DIV}{?*?} &
+\cross{DIV}{?+?} \\
+\cross{DIV}{?-?} &
+\cross{DIV}{?$<=$?} &
+\cross{DIV}{?=?} &
+\cross{DIV}{?\~{}=?} \\
+\cross{DIV}{coefficient} &
+\cross{DIV}{coerce} &
+\cross{DIV}{collect} &
+\cross{DIV}{concat} \\
+\cross{DIV}{degree} &
+\cross{DIV}{divOfPole} &
+\cross{DIV}{divOfZero} &
+\cross{DIV}{effective?} \\
+\cross{DIV}{hash} &
+\cross{DIV}{head} &
+\cross{DIV}{highCommonTerms} &
+\cross{DIV}{incr} \\
+\cross{DIV}{latex} &
+\cross{DIV}{mapCoef} &
+\cross{DIV}{mapGen} &
+\cross{DIV}{nthCoef} \\
+\cross{DIV}{nthFactor} &
+\cross{DIV}{reductum} &
+\cross{DIV}{retract} &
+\cross{DIV}{retractIfCan} \\
+\cross{DIV}{sample} &
+\cross{DIV}{size} &
+\cross{DIV}{split} &
+\cross{DIV}{subtractIfCan} \\
+\cross{DIV}{supp} &
+\cross{DIV}{suppOfPole} &
+\cross{DIV}{suppOfZero} &
+\cross{DIV}{terms} \\
+\cross{DIV}{zero?} &&
+\end{tabular}
+
+<<domain DIV Divisor>>=
+)abbrev domain DIV Divisor
+++ Author: Gaetan Hache
+++ Date Created: 17 nov 1992
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description:  
+++ The following is part of the PAFF package
+Divisor(S:SetCategoryWithDegree):Exports == Implementation where
+
+  PT      ==>  Record(gen:S,exp: Integer)
+  INT     ==> Integer
+  BOOLEAN ==> Boolean
+  LIST    ==> List
+
+  Exports == DivisorCategory(S) with
+
+    head: % -> PT
+
+    reductum: % -> %
+
+  Implementation == List PT add
+
+    Rep := List PT
+    
+    incr(d)==
+      [ [ pt.gen , pt.exp + 1 ] for pt in d ]    
+    
+    inOut: PT -> OutputForm
+
+    inOut(pp)==
+      one?(pp.exp) => pp.gen :: OutputForm
+      bl:OutputForm:= " " ::OutputForm
+      (pp.exp :: OutputForm) * hconcat(bl,pp.gen :: OutputForm) 
+
+    coerce(d:%):OutputForm==
+      zero?(d) => ("0"::OutputForm)
+      ll:List OutputForm:=[inOut df  for df in d]
+      reduce("+",ll)
+
+    reductum(d)==
+      zero?(d) => d
+      dl:Rep:= d pretend Rep
+      dlr := rest dl
+      empty?(dlr) => 0
+      dlr
+
+    head(d)==
+      zero?(d) => error "Cannot take head of zero"
+      dl:Rep:= d pretend Rep
+      first dl
+
+    coerce(s:S) == [[s,1]$PT]::%
+
+    split(a) == 
+      zero?(a) => []
+      [[r]::% for r in a]
+
+    coefficient(s,a)==
+      r:INT:=0
+      for pt in terms(a) repeat
+        if pt.gen=s then
+          r:=pt.exp
+      r
+
+    terms(a)==a::Rep
+
+    0==empty()$Rep
+
+    supp(a)==
+      aa:=terms(collect(a))
+      [p.gen for p in aa | ^zero?(p.exp)]  
+
+    suppOfZero(a)==
+      aa:=terms(collect(a))
+      [p.gen for p in aa | (p.exp) > 0 ]  
+
+    suppOfPole(a)==
+      aa:=terms(collect(a))
+      [p.gen for p in aa | p.exp < 0 ]  
+
+    divOfZero(a)==
+      aa:=terms(collect(a))
+      [p for p in aa | (p.exp) > 0 ]::%  
+
+    divOfPole(a)==
+      aa:=terms(collect(a))
+      [p for p in aa | p.exp < 0 ]::%  
+
+    zero?(a)==
+      ((collect(a)::Rep)=empty()$Rep)::BOOLEAN
+
+    collect(d)==
+      a:=d::Rep
+      empty?(a) => 0      
+      t:Rep:=empty()
+      ff:PT:=first(a)
+      one?(#(a)) =>
+        if zero?(ff.exp) then
+          t::%
+        else
+          a::%
+      inList?:Boolean:=false()
+      newC:INT
+      restred:=terms(collect((rest(a)::%)))
+      zero?(ff.exp) =>
+        restred::%
+      for bb in restred repeat
+        b:=bb::PT
+        if b.gen=ff.gen then
+          newC:=b.exp+ff.exp
+          if ^zero?(newC) then
+            t:=concat(t,[b.gen,newC]$PT)
+          inList?:=true()
+        else
+          t:=concat(t,b)
+      if ^inList? then
+        t:=cons(ff,t)
+      t::%  
+
+    a:% + b:% ==
+      collect(concat(a pretend Rep,b pretend Rep))
+
+    a:% - b:% ==
+      a + (-1)*b 
+
+    -a:% == (-1)*a
+
+    n:INT * a:% ==
+      zero?(n) => 0
+      t:Rep:=empty()
+      for p in a pretend Rep repeat
+        t:=concat(t,[ p.gen, n*p.exp]$PT)
+      t::%
+
+    a:% <= b:% ==
+      bma:= b - a
+      effective? bma => true 
+      false
+
+    effective?(a)== empty?(suppOfPole(a))
+
+    degree(d:%):Integer==
+      reduce("+",[(p.exp * degree(p.gen)) for p in d @ Rep],0$INT)          
+@
+<<DIV.dotabb>>=
+"DIV" [color="#88FF44",href="bookvol10.3.pdf#nameddest=DIV",shape=ellipse]
+"DIVCAT" [color=lightblue,href="bookvol10.2.pdf#nameddest=DIVCAT"];
+"FLAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=FLAGG"];
+"DIV" -> "DIVCAT"
+"DIV" -> "FLAGG"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{domain DFLOAT DoubleFloat}
 Greg Vanuxem has added some functionality to allow the user to modify
 the printed format of floating point numbers. The format of the numbers
@@ -125250,6 +125506,7 @@ Note that this code is not included in the generated catdef.spad file.
 <<domain DPMM DirectProductMatrixModule>>
 <<domain DPMO DirectProductModule>>
 <<domain DMP DistributedMultivariatePolynomial>>
+<<domain DIV Divisor>>
 <<domain DFLOAT DoubleFloat>>
 <<domain DROPT DrawOption>>
 <<domain D01AJFA d01ajfAnnaType>>
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 6ea1f0c..2fc88e6 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -23888,6 +23888,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|DirectProductFunctions2| . DIRPROD2)
    (|DisplayPackage| . DISPLAY)
    (|DistinctDegreeFactorize| . DDFACT)
+   (|Divisor| . DIV)
    (|DoubleFloat| . DFLOAT)
    (|DoubleFloatSpecialFunctions| . DFSFUN)
    (|DrawComplex| . DRAWCX)
diff --git a/books/ps/v103divisor.ps b/books/ps/v103divisor.ps
new file mode 100644
index 0000000..0779685
--- /dev/null
+++ b/books/ps/v103divisor.ps
@@ -0,0 +1,305 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Graphviz version 2.20.2 (Mon Mar 30 10:09:11 UTC 2009)
+%%For: (root) root
+%%Title: pic
+%%Pages: (atend)
+%%BoundingBox: (atend)
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {	% i j npages
+	/npages exch def
+	/j exch def
+	/i exch def
+	/str 10 string def
+	npages 1 gt {
+		gsave
+			coordfont setfont
+			0 0 moveto
+			(\() show i str cvs show (,) show j str cvs show (\)) show
+		grestore
+	} if
+} bind def
+
+/set_font {
+	findfont exch
+	scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {			% width text
+	/text exch def
+	/width exch def
+	gsave
+		width 0 gt {
+			[] 0 setdash
+			text stringwidth pop width exch sub text length div 0 text ashow
+		} if
+	grestore
+} def
+
+/boxprim {				% xcorner ycorner xsize ysize
+		4 2 roll
+		moveto
+		2 copy
+		exch 0 rlineto
+		0 exch rlineto
+		pop neg 0 rlineto
+		closepath
+} bind def
+
+/ellipse_path {
+	/ry exch def
+	/rx exch def
+	/y exch def
+	/x exch def
+	matrix currentmatrix
+	newpath
+	x y translate
+	rx ry scale
+	0 0 1 0 360 arc
+	setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+	[	% layer color sequence - darkest to lightest
+		[0 0 0]
+		[.2 .8 .8]
+		[.4 .8 .8]
+		[.6 .8 .8]
+		[.8 .8 .8]
+	]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+	layercolorseq curlayer 1 sub layerlen mod get
+	aload pop sethsbcolor
+	/nodecolor {nopcolor} def
+	/edgecolor {nopcolor} def
+	/graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+	/myupper exch def
+	/mylower exch def
+	curlayer mylower lt
+	curlayer myupper gt
+	or
+	{invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 194 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 158 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% DIV
+gsave
+[ /Rect [ 47 72 105 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.3.pdf#nameddest=DIV) >>
+  /Subtype /Link
+/ANN pdfmark
+0.273 0.733 1.000 nodecolor
+76 90 29.19 18 ellipse_path fill
+1 setlinewidth
+filled
+0.273 0.733 1.000 nodecolor
+76 90 29.19 18 ellipse_path stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+63 85.9 moveto 26 (DIV) alignedtext
+grestore
+% DIVCAT
+gsave
+[ /Rect [ 0 0 68 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=DIVCAT) >>
+  /Subtype /Link
+/ANN pdfmark
+0.537 0.247 0.902 nodecolor
+newpath 68 36 moveto
+0 36 lineto
+0 0 lineto
+68 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.537 0.247 0.902 nodecolor
+newpath 68 36 moveto
+0 36 lineto
+0 0 lineto
+68 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+7.5 13.9 moveto 53 (DIVCAT) alignedtext
+grestore
+% DIV->DIVCAT
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 66 73 moveto
+61 65 55 54 50 45 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 52.92 43.04 moveto
+45 36 lineto
+46.8 46.44 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 52.92 43.04 moveto
+45 36 lineto
+46.8 46.44 lineto
+closepath stroke
+grestore
+% FLAGG
+gsave
+[ /Rect [ 86 0 150 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=FLAGG) >>
+  /Subtype /Link
+/ANN pdfmark
+0.537 0.247 0.902 nodecolor
+newpath 150 36 moveto
+86 36 lineto
+86 0 lineto
+150 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.537 0.247 0.902 nodecolor
+newpath 150 36 moveto
+86 36 lineto
+86 0 lineto
+150 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+93.5 13.9 moveto 49 (FLAGG) alignedtext
+grestore
+% DIV->FLAGG
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 86 73 moveto
+91 65 97 54 102 45 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 105.2 46.44 moveto
+107 36 lineto
+99.08 43.04 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 105.2 46.44 moveto
+107 36 lineto
+99.08 43.04 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 194 152
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index c331a32..048ebca 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20100517 tpd src/axiom-website/patches.html 20100517.03.tpd.patch
+20100517 tpd src/algebra/Makefile help and test for Divisor
+20100517 tpd books/bookvol5 expose Divisor
+20100517 tpd books/bookvol10.3 add Divisor
+20100517 tpd books/ps/v103divisor.ps
 20100517 tpd src/axiom-website/patches.html 20100517.02.tpd.patch
 20100517 tpd books/bookvol10.2 add DIVCAT Description documentation
 20100517 tpd src/axiom-website/patches.html 20100517.01.tpd.patch
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index e99659c..1b8a4c6 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -2265,7 +2265,8 @@ LAYER7=\
   ${OUT}/A1AGG.o    ${OUT}/A1AGG-.o   ${OUT}/ARR2CAT.o  ${OUT}/ARR2CAT-.o \
   ${OUT}/ASP34.o    ${OUT}/BBTREE.o   ${OUT}/BFUNCT.o   ${OUT}/BLAS1.o    \
   ${OUT}/BPADIC.o   \
-  ${OUT}/BTREE.o    ${OUT}/CRAPACK.o  ${OUT}/DEQUEUE.o  ${OUT}/DLIST.o    \
+  ${OUT}/BTREE.o    ${OUT}/CRAPACK.o  ${OUT}/DEQUEUE.o  ${OUT}/DIV.o      \
+  ${OUT}/DLIST.o    \
   ${OUT}/DRAWCX.o   ${OUT}/DRAWPT.o   ${OUT}/D01GBFA.o  ${OUT}/D02EJFA.o  \
   ${OUT}/D03FAFA.o  ${OUT}/FAMR.o     ${OUT}/FAMR-.o    ${OUT}/FIELD.o    \
   ${OUT}/FLASORT.o  \
@@ -2459,6 +2460,21 @@ LAYER7=\
 "DEQUEUE" -> "FLAGG"
 /*"DEQUEUE" -> "ELAGG"*/
 
+"DIV" [color="#88FF44",href="bookvol10.3.pdf#nameddest=DIV"]
+"DIV" -> "DIVCAT"
+"DIV" -> "FLAGG"
+/*"DIV" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SETCAT"; "BASTYPE"}*/
+/*"DIV" -> {"KOERCE"; "MODULE"; "BMODULE"; "LMODULE"; "RMODULE"; "FAMONC"}*/
+/*"DIV" -> {"RETRACT"; "SETCATD"; "INS"; "UFD"; "GCDDOM"; "INTDOM"}*/
+/*"DIV" -> {"COMRING"; "RING"; "RNG"; "SGROUP"; "MONOID"; "ALGEBRA"}*/
+/*"DIV" -> {"ENTIRER"; "EUCDOM"; "PID"; "OINTDOM"; "ORDRING"; "OAGROUP"}*/
+/*"DIV" -> {"OCAMON"; "OAMON"; "OASGP"; "ORDSET"; "DIFRING"; "KONVERT"}*/
+/*"DIV" -> {"LINEXP"; "PATMAB"; "CFCAT"; "REAL"; "CHARZ"; "STEP"; "OM"}*/
+/*"DIV" -> {"INT"; "LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"; "AGG"}*/
+/*"DIV" -> {"TYPE"; "EVALAB"; "IEVALAB"; "LNAGG"; "IXAGG"; "ELTAGG"; "ELTAB"}*/
+/*"DIV" -> {"CLAGG"; "ELAGG"; "LIST"; "ILIST"; "LSAGG-"; "BOOLEAN"; "NNI"}*/
+/*"DIV" -> {"STAGG-"; "ELAGG-"; "PI"}*/
+
 "DLIST" [color="#88FF44",href="bookvol10.3.pdf#nameddest=DLIST"]
 /*"DLIST" -> {"LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"; "AGG"; "TYPE"}*/
 /*"DLIST" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "EVALAB"; "IEVALAB"; "LNAGG"}*/
@@ -16455,7 +16471,6 @@ ${MID}/AFFPL.nrlib/code.o: ${MID}/AFFPL.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
-
 <<newcode>>=
 
 AFFPLPSDEPS = PACOFF AFSPCAT AFFPL SETCATD PACFFC PACPERC
@@ -16471,6 +16486,21 @@ ${MID}/AFFPLPS.nrlib/code.o: ${MID}/AFFPLPS.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+ 
+DIVDEPS = SETCATD DIVCAT
+
+${MID}/DIV.nrlib/code.o: ${MID}/DIV.spad
+	@echo P3 making ${MID}/DIV.nrlib/code.o from ${MID}/DIV.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${DIVDEPS} \n )co DIV.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${DIVDEPS} \n )co DIV.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -17206,6 +17236,7 @@ SPADHELP=\
  ${HELP}/DecimalExpansion.help \
  ${HELP}/Dequeue.help \
  ${HELP}/DistributedMultivariatePolynomial.help \
+ ${HELP}/Divisor.help \
  ${HELP}/DivisorCategory.help \
  ${HELP}/DoubleFloat.help \
  ${HELP}/ElementaryFunction.help \
@@ -17391,6 +17422,7 @@ REGRESS= \
  DeRhamComplex.regress \
  DecimalExpansion.regress \
  Dequeue.regress \
+ Divisor.regress \
  DivisorCategory.regress \
  DoubleFloat.regress \
  ElementaryFunction.regress \
@@ -17876,8 +17908,18 @@ ${HELP}/DistributedMultivariatePolynomial.help: \
             >${INPUT}/DistributedMultivariatePolynomial.input
 	@echo "DistributedMultivariatePolynomial (DMP)" >>${HELPFILE}
 
+${HELP}/Divisor.help: ${BOOKS}/bookvol10.3.pamphlet
+	@echo 7205 create Divisor.help from \
+            ${BOOKS}/bookvol10.3.pamphlet
+	@${TANGLE} -R"Divisor.help" ${BOOKS}/bookvol10.3.pamphlet \
+            >${HELP}/Divisor.help
+	@cp ${HELP}/Divisor.help ${HELP}/DIV.help
+	@${TANGLE} -R"Divisor.input" ${BOOKS}/bookvol10.3.pamphlet \
+            >${INPUT}/Divisor.input
+	@echo "Divisor (DIV)" >>${HELPFILE}
+
 ${HELP}/DivisorCategory.help: ${BOOKS}/bookvol10.2.pamphlet
-	@echo 7205 create DivisorCategory.help from \
+	@echo 7207 create DivisorCategory.help from \
             ${BOOKS}/bookvol10.2.pamphlet
 	@${TANGLE} -R"DivisorCategory.help" ${BOOKS}/bookvol10.2.pamphlet \
             >${HELP}/DivisorCategory.help
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 01af3d8..2bf5c5c 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2741,5 +2741,7 @@ books/bookvol10.3.AffinePlaneOverPseudoAlgebraicClosureOfFiniteField<br/>
 books/bookvol10.2 add DivisorCategory<br/>
 <a href="patches/20100517.02.tpd.patch">20100517.02.tpd.patch</a>
 books/bookvol10.2 add DIVCAT Description documentation<br/>
+<a href="patches/20100517.03.tpd.patch">20100517.03.tpd.patch</a>
+books/bookvol10.3 add Divisor<br/>
  </body>
 </html>
