diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 69d0e57..5c826cf 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -146422,7 +146422,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
         error "clipDraw: fraction should be between 0 and 1"
       empty? pointLists => [nil(),segment(0,0),segment(0,0)]
       -- put all points together , sort them according to norm
-      sortedList := sort(norm(#1) < norm(#2),select(not Pnan? #1,concat pointLists))
+      sortedList := sort((x:Pt,y:Pt):Boolean +-> norm(x) < norm(y),
+                     select((z:Pt):Boolean +-> not Pnan? z,concat pointLists))
       empty? sortedList => [nil(),segment(0,0),segment(0,0)]
       n := # sortedList 
       num := numer fraction
@@ -146537,7 +146538,7 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
         error "clipDraw: plot has more than one branch"
       empty?(pointList := first pointLists) =>
         [nil(),xVals,segment(0,0)]
-      sortedList := sort(yCoord(#1) < yCoord(#2),pointList)
+      sortedList := sort((x,y)+->yCoord(x) < yCoord(y),pointList)
       n := # sortedList; num := numer fraction; den := denom fraction
       clipNum := (n * num) quo den
       -- throw out points with large and small y-coordinates
@@ -146552,7 +146553,8 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
       yMin := yMin - (numm :: SF) * yDiff / (denn :: SF)
       yMax := yMax + (numm :: SF) * yDiff / (denn :: SF)
       lists := discardAndSplit(pointList,_
-         (yCoord(#1) < yMax) and (yCoord(#1) > yMin),xMin,xMax,yMin,yMax)
+         x +-> (yCoord(x) < yMax) and (yCoord(x) > yMin),
+           xMin,xMax,yMin,yMax)
       yMin := yCoord(sortedList.clipNum)
       yMax := yCoord(sortedList.(n - 1 - clipNum))
       if Fnan? yMin then yMin : SF := 0
@@ -146590,10 +146592,10 @@ TwoDimensionalPlotClipping(): Exports == Implementation where
     clipWithRanges(pointLists,xMin,xMax,yMin,yMax) ==
       lists : L L Pt := nil()
       for pointList in pointLists repeat
-        lists := concat(lists,discardAndSplit(pointList,_
-           (xCoord(#1) <= xMax) and (xCoord(#1) >= xMin) and _
-           (yCoord(#1) <= yMax) and (yCoord(#1) >= yMin), _
-           xMin,xMax,yMin,yMax))
+        lists := concat(lists,discardAndSplit(pointList,
+          (x:Pt):Boolean +-> (xCoord(x) <= xMax) and (xCoord(x) >= xMin) and 
+            (yCoord(x) <= yMax) and (yCoord(x) >= yMin), 
+             xMin,xMax,yMin,yMax))
       (pt := findPt lists) case "failed" =>
         [nil(),segment(0,0),segment(0,0)]
       firstPt := pt :: Pt
diff --git a/changelog b/changelog
index 2ad8225..3908072 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20090624 tpd src/axiom-website/patches.html 20090624.04.tpd.patch
+20090624 tpd books/bookvol10.4 CLIP +-> conversion
 20090624 tpd src/axiom-website/patches.html 20090624.03.tpd.patch
 20090624 tpd books/bookvol10.4 TRIGMNIP +-> conversion
 20090624 tpd src/axiom-website/patches.html 20090624.02.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 6543579..169f744 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -1657,5 +1657,7 @@ bookvol10.4 RDETRS +-> conversion<br/>
 bookvol10.4 SOLVETRA +-> conversion<br/>
 <a href="patches/20090624.03.tpd.patch">20090624.03.tpd.patch</a>
 bookvol10.4 TRIGMNIP +-> conversion<br/>
+<a href="patches/20090624.04.tpd.patch">20090624.04.tpd.patch</a>
+bookvol10.4 CLIP +-> conversion<br/>
  </body>
 </html>
