diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 941bd90..4c310a0 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -54968,6 +54968,125 @@ LinearPolynomialEquationByFractions(R:PolynomialFactorizationExplicit): with
 
 @
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{package LISYSER LinearSystemFromPowerSeriesPackage}
+<<LinearSystemFromPowerSeriesPackage.input>>=
+)set break resume
+)sys rm -f LinearSystemFromPowerSeriesPackage.output
+)spool LinearSystemFromPowerSeriesPackage.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show LinearSystemFromPowerSeriesPackage
+--R LinearSystemFromPowerSeriesPackage(K: Field,PCS: LocalPowerSeriesCategory K)  is a package constructor
+--R Abbreviation for LinearSystemFromPowerSeriesPackage is LISYSER 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.4.pamphlet to see algebra source code for LISYSER 
+--R
+--R------------------------------- Operations --------------------------------
+--R finiteSeries2LinSys : (List PCS,Integer) -> Matrix K
+--R finiteSeries2LinSysWOVectorise : (List PCS,Integer) -> Matrix K
+--R finiteSeries2Vector : (PCS,Integer) -> List K
+--R
+--E 1
+
+)spool
+)lisp (bye)
+@
+
+<<LinearSystemFromPowerSeriesPackage.help>>=
+====================================================================
+LinearSystemFromPowerSeriesPackage examples
+====================================================================
+
+See Also:
+o )show LinearSystemFromPowerSeriesPackage
+
+@
+\pagehead{LinearSystemFromPowerSeriesPackage}{LISYSER}
+\pagepic{ps/v104linearsystemfrompowerseriespackage.ps}{LISYSER}{1.00}
+
+{\bf Exports:}\\
+\begin{tabular}{lll}
+\cross{LISYSER}{finiteSeries2LinSys} &
+\cross{LISYSER}{finiteSeries2LinSysWOVectorise} &
+\cross{LISYSER}{finiteSeries2Vector}
+\end{tabular}
+
+<<package LISYSER LinearSystemFromPowerSeriesPackage>>=
+)abbrev package LISYSER LinearSystemFromPowerSeriesPackage
+++ Authors: Gaetan Hache
+++ Date Created:  1996
+++ Date Last Updated: May 2010 by Tim Daly
+++ Description: 
+++ Part of the PAFF package
+LinearSystemFromPowerSeriesPackage(K,PCS):P==T where
+  K : Field
+  PCS: LocalPowerSeriesCategory(K)
+    
+  INT     ==> Integer
+  TERM    ==> Record(k:INT,c:K)    
+  SER     ==> Stream(TERM)
+  LOpPack ==> LinesOpPack(K)
+    
+  P==> with
+    finiteSeries2LinSysWOVectorise: (List PCS, INT) -> Matrix K
+
+    finiteSeries2LinSys: (List PCS, INT) -> Matrix K
+      ++ finiteSeries2LinSys(ls,n) returns a matrix which right kernel 
+      ++ is the solution of the linear combinations of the series in ls 
+      ++ which has order greater or equal to n.
+      ++ NOTE: All the series in ls must be finite and must have order 
+      ++ at least 0: so one must first call on each of them the
+      ++ function filterUpTo(s,n) and apply an appropriate shift 
+      ++ (mult by a power of t).
+
+    finiteSeries2Vector: (PCS, INT) -> List K
+    
+  T==> add
+    finiteSeries2ListOfTerms: PCS -> List TERM
+
+    finiteSeries2ListOfTermsStream: SER -> List TERM
+      
+    finiteSeries2ListOfTermsStream(s)==     
+      empty?(s) => empty()
+      cons(frst s , finiteSeries2ListOfTermsStream(rst(s)))
+      
+    finiteSeries2LinSys(ls,n)==
+      ll:List K:=  [0$K]
+      lZero:=new(#ls pretend NonNegativeInteger,ll)$List(List(K))
+      n <= 0  => transpose matrix lZero
+      tMat:=transpose matrix [finiteSeries2Vector(s,n) for s in ls]
+      rowEchWoZeroLines(tMat)$LOpPack
+
+    finiteSeries2LinSysWOVectorise(ls,n)==
+      ll:List K:=  [0$K]
+      lZero:=new(#ls pretend NonNegativeInteger,ll)$List(List(K))
+      n <= 0  => transpose matrix lZero
+      tMat:=transpose matrix [finiteSeries2Vector(s,n) for s in ls]
+      rowEchWoZeroLinesWOVectorise(tMat)$LOpPack
+           
+    finiteSeries2ListOfTerms(s)==
+      ss:SER:= s :: SER
+      finiteSeries2ListOfTermsStream(ss)
+  
+    finiteSeries2Vector(ins,n)==
+      lZero:=new((n pretend NonNegativeInteger),0)$List(K)
+      s:= removeFirstZeroes ins
+      lOfTerm:=finiteSeries2ListOfTerms(s)
+      for t in lOfTerm repeat lZero.((t.k)+1):= t.c
+      lZero
+   
+  
+@
+<<LISYSER.dotabb>>=
+"LISYSER" [color="#FF4488",href="bookvol10.4.pdf#nameddest=LISYSER"]
+"LOCPOWC" [color="#4488FF",href="bookvol10.2.pdf#nameddest=LOCPOWC"]
+"LISYSER" -> "LOCPOWC"
+
+@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{package LSMP LinearSystemMatrixPackage}
 \pagehead{LinearSystemMatrixPackage}{LSMP}
 \pagepic{ps/v104linearsystemmatrixpackage.ps}{LSMP}{1.00}
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 2cb7821..6fa9b73 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -23997,6 +23997,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
    (|LinearOrdinaryDifferentialOperator| . LODO)
    (|LinearSystemMatrixPackage| . LSMP)
    (|LinearSystemMatrixPackage1| . LSMP1)
+   (|LinearSystemFromPowerSeriesPackage| . LISYSER)
    (|LinearSystemPolynomialPackage| . LSPP)
    (|List| . LIST)
    (|LinesOpPack| . LOP)
diff --git a/books/ps/v104linearsystemfrompowerseriespackage.ps b/books/ps/v104linearsystemfrompowerseriespackage.ps
new file mode 100644
index 0000000..fefec3c
--- /dev/null
+++ b/books/ps/v104linearsystemfrompowerseriespackage.ps
@@ -0,0 +1,268 @@
+%!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 134 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 98 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 40 translate
+% LISYSER
+gsave
+[ /Rect [ 8 72 82 108 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.4.pdf#nameddest=LISYSER) >>
+  /Subtype /Link
+/ANN pdfmark
+0.939 0.733 1.000 nodecolor
+newpath 82 108 moveto
+8 108 lineto
+8 72 lineto
+82 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.939 0.733 1.000 nodecolor
+newpath 82 108 moveto
+8 108 lineto
+8 72 lineto
+82 72 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+15.5 85.9 moveto 59 (LISYSER) alignedtext
+grestore
+% LOCPOWC
+gsave
+[ /Rect [ 0 0 90 36 ]
+  /Border [ 0 0 0 ]
+  /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=LOCPOWC) >>
+  /Subtype /Link
+/ANN pdfmark
+0.606 0.733 1.000 nodecolor
+newpath 90 36 moveto
+0 36 lineto
+0 0 lineto
+90 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0.606 0.733 1.000 nodecolor
+newpath 90 36 moveto
+0 36 lineto
+0 0 lineto
+90 0 lineto
+closepath stroke
+0.000 0.000 0.000 nodecolor
+14 /Times-Roman set_font
+8 13.9 moveto 74 (LOCPOWC) alignedtext
+grestore
+% LISYSER->LOCPOWC
+gsave
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 45 72 moveto
+45 64 45 55 45 46 curveto
+stroke
+0.000 0.000 0.000 edgecolor
+newpath 48.5 46 moveto
+45 36 lineto
+41.5 46 lineto
+closepath fill
+1 setlinewidth
+solid
+0.000 0.000 0.000 edgecolor
+newpath 48.5 46 moveto
+45 36 lineto
+41.5 46 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+%%BoundingBox: 36 36 134 152
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index a035034..67b2931 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20100512 tpd src/axiom-website/patches.html 20100512.02.tpd.patch
+20100512 tpd src/algebra/Makefile help and test for LISYSER
+20100512 tpd books/bookvol5 expose LinearSystemFromPowerSeriesPackage
+20100512 tpd books/bookvol10.4 add LinearSystemFromPowerSeriesPackage
+20100512 tpd books/ps/v104linearsystemfrompowerseriespackage.ps added
 20100512 tpd src/axiom-website/patches.html 20100512.01.tpd.patch
 20100512 tpd src/algebra/Makefile help and test files for NSDPS
 20100512 tpd books/bookvol5 expose NeitherSparseOrDensePowerSeries
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 3fa8ab5..6395345 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -5178,7 +5178,7 @@ LAYER10=\
 
 @
 \subsection{Layer11}
-Depends on: DIRPCAT FAXF PFECAT STRING\\
+Depends on: DIRPCAT FAXF PFECAT STRING LOP\\
 Used by next layer: DIOPS DPOLCAT FINRALG FRAC RMATCAT RRCC UPXSCAT
 <<layer11>>=
 
@@ -5213,7 +5213,8 @@ LAYER11=\
   ${OUT}/INTHERTR.o \
   ${OUT}/INTRAT.o   ${OUT}/INTRF.o    ${OUT}/INTSLPE.o  ${OUT}/INTTR.o    \
   ${OUT}/ISUMP.o    ${OUT}/LAUPOL.o   ${OUT}/LEADCDET.o ${OUT}/LGROBP.o   \
-  ${OUT}/LIMITRF.o  ${OUT}/LINDEP.o   ${OUT}/LO.o       ${OUT}/LPEFRAC.o  \
+  ${OUT}/LIMITRF.o  ${OUT}/LINDEP.o   ${OUT}/LISYSER.o  \
+  ${OUT}/LO.o       ${OUT}/LPEFRAC.o  \
   ${OUT}/LSPP.o     ${OUT}/MATLIN.o   ${OUT}/MCDEN.o    ${OUT}/MDDFACT.o  \
   ${OUT}/MFINFACT.o ${OUT}/MFLOAT.o   ${OUT}/MINT.o     ${OUT}/MLIFT.o    \
   ${OUT}/MMAP.o     ${OUT}/MODMON.o   ${OUT}/MONOTOOL.o ${OUT}/MPCPF.o    \
@@ -7056,6 +7057,19 @@ LAYER11=\
 /*"LINDEP" -> {"FLINEXP"; "PATAB"; "FPATMAB"; "CHARNZ"}*/
 "LINDEP" -> "PFECAT"
 
+"LISYSER" [color="#FF4488",href="bookvol10.4.pdf#nameddest=LISYSER"]
+/*"LISYSER" -> {"FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"}*/
+/*"LISYSER" -> {"RING"; "RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"}*/
+/*"LISYSER" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "SGROUP"; "MONOID"; "LMODULE"}*/
+/*"LISYSER" -> {"BMODULE"; "RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"}*/
+/*"LISYSER" -> {"DIVRING"}*/
+"LISYSER" -> "LOCPOWC"
+/*"LISYSER" -> {"UPSCAT"; "PSCAT"; "AMR"; "CHARZ"; "CHARNZ"; "ELTAB"}*/
+/*"LISYSER" -> {"DIFRING"; "PDRING"; "INT"; "LIST"; "ILIST"; "LSAGG"}*/
+/*"LISYSER" -> {"STAGG"; "URAGG"; "RCAGG"; "HOAGG"; "AGG"; "TYPE"; "EVALAB"}*/
+/*"LISYSER" -> {"IEVALAB"; "LNAGG"; "IXAGG"; "ELTAGG"; "CLAGG"; "KONVERT"}*/
+/*"LISYSER" -> {"FLAGG"; "ORDSET"; "ELAGG"; "OM"; "LSAGG-"; "NNI"; "STAGG-"}*/
+
 "LO" [color="#88FF44",href="bookvol10.3.pdf#nameddest=LO"]
 /*"LO" -> {"MODULE"; "BMODULE"; "LMODULE"; "ABELGRP"; "CABMON"; "ABELMON"}*/
 /*"LO" -> {"ABELSG"; "SETCAT"; "BASTYPE"; "KOERCE"; "RMODULE"; "OAGROUP"}*/
@@ -16170,6 +16184,21 @@ ${MID}/NSDPS.nrlib/code.o: ${MID}/NSDPS.spad
 	      | ${INTERPSYS} >${TMP}/trace ; \
 	   fi )
 @
+<<newcode>>=
+
+LISYSERDEPS = LOCPOWC LOP
+
+${MID}/LISYSER.nrlib/code.o: ${MID}/LISYSER.spad
+	@echo P3 making ${MID}/LISYSER.nrlib/code.o from ${MID}/LISYSER.spad
+	@ (cd ${MID} ; \
+	   if [ -z "${NOISE}" ] ; then \
+	    echo -e ")lib ${LISYSERDEPS} \n )co LISYSER.spad" \
+              | ${INTERPSYS} ; \
+           else \
+	    echo -e ")lib ${LISYSERDEPS} \n )co LISYSER.spad" \
+	      | ${INTERPSYS} >${TMP}/trace ; \
+	   fi )
+@
 
 \section{Broken Files}
 These files are Aldor files
@@ -16940,6 +16969,7 @@ SPADHELP=\
  ${HELP}/LinearOrdinaryDifferentialOperator.help \
  ${HELP}/LinearOrdinaryDifferentialOperator1.help \
  ${HELP}/LinearOrdinaryDifferentialOperator2.help \
+ ${HELP}/LinearSystemFromPowerSeriesPackage.help \
  ${HELP}/List.help \
  ${HELP}/LinesOpPack.help \
  ${HELP}/LocalPowerSeriesCategory.help \
@@ -17112,6 +17142,7 @@ REGRESS= \
  LinearOrdinaryDifferentialOperator.regress \
  LinearOrdinaryDifferentialOperator1.regress \
  LinearOrdinaryDifferentialOperator2.regress \
+ LinearSystemFromPowerSeriesPackage.regress \
  List.regress \
  LinesOpPack.regress \
  LocalPowerSeriesCategory.regress \
@@ -17931,6 +17962,19 @@ ${HELP}/LinearOrdinaryDifferentialOperator2.help: \
             >${INPUT}/LinearOrdinaryDifferentialOperator2.input
 	@echo "LinearOrdinaryDifferentialOperator2 (LODO2)" >>${HELPFILE}
 
+${HELP}/LinearSystemFromPowerSeriesPackage.help: ${BOOKS}/bookvol10.4.pamphlet
+	@echo 7555 create LinearSystemFromPowerSeriesPackage.help from \
+           ${BOOKS}/bookvol10.4.pamphlet
+	@${TANGLE} -R"LinearSystemFromPowerSeriesPackage.help" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           >${HELP}/LinearSystemFromPowerSeriesPackage.help
+	@cp ${HELP}/LinearSystemFromPowerSeriesPackage.help \
+           ${HELP}/LISYSER.help
+	@${TANGLE} -R"LinearSystemFromPowerSeriesPackage.input" \
+           ${BOOKS}/bookvol10.4.pamphlet \
+           >${INPUT}/LinearSystemFromPowerSeriesPackage.input
+	@echo "LinearSystemFromPowerSeriesPackage (LISYSER)" >>${HELPFILE}
+
 ${HELP}/List.help: ${BOOKS}/bookvol10.3.pamphlet
 	@echo 7560 create List.help from ${BOOKS}/bookvol10.3.pamphlet
 	@${TANGLE} -R"List.help" ${BOOKS}/bookvol10.3.pamphlet \
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index dafd1e6..be5fd2e 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2699,5 +2699,7 @@ src/input/Makefile remove duplicate curl.input invocation<br/>
 books/bookvol10.2 add LocalPowerSeriesCategory<br/>
 <a href="patches/20100512.01.tpd.patch">20100512.01.tpd.patch</a>
 books/bookvol10.3 add NeitherSparseOrDensePowerSeries<br/>
+<a href="patches/20100512.02.tpd.patch">20100512.02.tpd.patch</a>
+books/bookvol10.4 add LinearSystemFromPowerSeriesPackage<br/>
  </body>
 </html>
