Есть:

## Код:
```
PROCEDURE (f: File) NewWriter (old: Files.Writer): Files.Writer;
      VAR w: Writer;
   BEGIN   (* portable *)
      ASSERT(f.state # closed, 20); ASSERT(f.state # shared, 21);
      IF (old # NIL) & (old IS Writer) THEN w := old(Writer) ELSE NEW(w) END;
      IF w.base # f THEN
         w.base := f; w.buf := NIL; w.SetPos(f.len)
      END;
      RETURN w
   END NewWriter;
```


Надо:
## Код:
```
PROCEDURE (f: File) NewWriter (old: Files.Writer): Files.Writer;
      VAR w: Writer;
   BEGIN   (* portable *)
      ASSERT(f.state # closed, 20);
      IF f.state # shared THEN
         IF (old # NIL) & (old IS Writer) THEN w := old(Writer) ELSE NEW(w) END;
         IF w.base # f THEN
            w.base := f; w.buf := NIL; w.SetPos(f.len)
         END;
         RETURN w
      ELSE
         RETURN NIL
      END
   END NewWriter;
```


Ляп серьёзный, т.к. определить shared-не shared, read-only - не read-only никакой возможности по файлу нет.