Index: /trunk/ccl/level-1/l1-streams.lisp
===================================================================
--- /trunk/ccl/level-1/l1-streams.lisp	(revision 5581)
+++ /trunk/ccl/level-1/l1-streams.lisp	(revision 5582)
@@ -77,4 +77,7 @@
 (defmethod stream-element-type ((x t))
   (report-bad-arg x 'stream))
+
+(defmethod stream-position ((s stream) &optional newpos)
+  (declare (ignore newpos)))
 
 ;;; For input streams:
@@ -4391,4 +4394,24 @@
 
 
+(defmethod stream-position ((s string-input-stream) &optional newpos)
+  (let* ((ioblock (basic-stream-ioblock s))
+         (start (string-input-stream-ioblock-start ioblock))
+         (idx (string-input-stream-ioblock-index ioblock))
+         (end (string-input-stream-ioblock-end ioblock)))
+    (declare (fixnum end idx start))
+    (if newpos
+      (let* ((limit (- end start)))
+        (declare (fixnum limit))
+        (if (and (typep newpos 'fixnum)
+                 (>= (the fixnum newpos) 0)
+                 (< (the fixnum newpos) limit))
+          (progn
+            (setf (string-input-stream-ioblock-index ioblock)
+                  (the fixnum (+ start (the fixnum newpos))))
+            newpos)
+          (report-bad-arg newpos `(integer 0 (,limit)))))
+      (the fixnum (- idx start)))))
+    
+  
 
 (defun string-input-stream-ioblock-read-char (ioblock)
