325: Thu Aug 21 14:08:52 EDT 1980
pt goes into an infinite loop if abs(quantile)>2
----------
Solution:  Thu Aug 21 16:40:49 EDT 1980
This was already ok on the release versions. Went away with reloading.
=========
331: Tue Aug 26 11:55:00 EDT 1980
When installing 3.0 Version of S on Mercury, found
unresolvable reference to "udiv" from psl library.
Apparently used in 3.0 for unsigned division?
----------
Solution:  Tue Aug 26 11:57:05 EDT 1980
Recompile and re-archive $P/u/cio.c and u/malloc.c.
=========
297: Mon Jul 14 17:50:15 EDT 1980
The new version of the boot means that more of the search buffer is used up.
It is fairly easy to overflow the buffer (ERZ did it with 1 chapter & 2 attaches)
We should enlarge the buffer (and reload everything that uses it).
Is there any possibility of making the buffer dynamic? Would require
a pointer to a position on the stack file (& would require rewriting
that part of the stack file in a special action after the search buffer
contents were changed).
----------
Solution:  Tue Aug 26 12:58:20 EDT 1980
$I/search.m has 600 as buffer size now (included in released version of S).
Should be large enough without need for dynamic stuff.
=========
299: Wed Jul 16 14:02:03 EDT 1980
The functions
stare; usa; text(state.center,1:50)
write to sgraph.  When replotted (either interactively
or via S BPLOT), state numbers do not coincide with
map.  Have user coords been screwed up?
Probably that usa finishes by resetting plot type (to "m"),
and replot sees that pty changed and regenerates plot.
Perhaps usa should regenerate plot type and reset user coords
so that the new coords coincide with the old ones.
(Reported by Dawn Kleinfield)
----------
Solution:  Tue Aug 26 14:09:22 EDT 1980
Plot type not changed. Instead usa.i calculates appropriate
coordinate system to preserve aspect ratio of map within
current plot region.  Thus when replotted, user coords stay.
=========
42: Wed Jan 23 16:04:27 EST 1980
PF seems to get dotted & dashed line types wrong on tek14.
PINIT may not know about tek14q.
Actually, with "overplot", pinit never called, thus dashl and dotl
never initialized in common block.
----------
Solution:  Tue Aug 26 15:19:42 EDT 1980
Changed $GRZ/plot1.r so that pinit always called
(SPECIFY(new(TRUE)) to prevent new frame if overplotting).
=========
310: Thu Jul 31 17:10:51 EDT 1980
Function `ts' terminates abnormally when given character data.
Problem: alctss uses jstkgt(l,dmode), and only allocates enough
room for characters, not for pointers.
----------
Solution:  Tue Aug 26 15:49:41 EDT 1980
Changed $S/alctss.r to use alcves rather than jstkgt to allocate
space for the data vector.  Replaced on $L/lang.
Reloaded ts.
=========
335: Wed Aug 27 10:09:10 EDT 1980
`table', when invoked twice in a row on the same datasets,
produces a table with twice the counts.
Three times --> triple counts, etc.
(Landwehr)
----------
Solution:  Wed Aug 27 11:04:25 EDT 1980
$P/u/gtblku no longer uses calloc (which zeroes allocated core).
$B/alctbs.r did not zero the core it got.
Changed alctbs to zero its data area.
=========
193: Wed Mar 26 13:21:17 EST 1980
Plotting done after `usa' has the plot region screwed up.
----------
Solution:  Wed Aug 27 14:36:21 EDT 1980
usa doesn't muck with plot type any more.
=========
340: Thu Sep 4 17:44:14 EDT 1980
stars seems to screw up in drawing the outline if the last
point is present & the first is MISSING.
Could be that typlot doesn't work right for lines
if the last pair is MISSING.
----------
Solution:  Fri Sep 5 12:59:14 EDT 1980
typlot is ok. The problem was that stars.r was copying the first data
point to be able to wrap around the outline & lost NA's in the process.
Changed to call pcopy.
=========
336: Fri Aug 29 16:03:30 EDT 1980
Macro Processor problem:
After macro invoked 8 times, gets into jstkst: Unknown statistic loop
on 9th time.
Try define MACRO abc(x) as print(x)
then invoke it 9 times.
(9/2)Following is true: jstkst is really called with big argument on 9th time
It previously gets called once (from oreset) with arg 1 for each ?abc line.
It seems that the constant 1 gets overwritten in oreset. But HOW?
----------
Solution:  Mon Sep 8 15:53:00 EDT 1980
Problem solved by changing $P/u/cio.c and $S/u/mktemp.c  so that the
dummy character string "Stemp.XXXXXX" had the 6 X's reset after
each call.  Previously, when this routine was invoked several times,
the X's had already been overwritten and the system mktemp call
simply appended characters to the name.  This grew until it overwrote
the arg to oreset.  Change allows maximum of 26 consecutive calls from
the same process.
===========
349: Fri Sep 12 14:38:08 EDT 1980
Fix up the scale function.
Try scale(cbind(1,longley.x),center=F).
----------
Solution:  Fri Sep 12 14:40:49 EDT 1980
Changed scale.i to center, then use sum of squares over
max(n-1,1).  (sqrt).  Added new error messages, warnings.
=========
348: Fri Sep 12 06:15:18 EDT 1980
Augment the dist function for computation of binary data distance:
1-sum(min(x[i],y[i])/max(x[i],y[i])).
----------
Solution:  Mon Sep 15 08:16:14 EDT 1980
Create $P/disbin.r, change $B/dist.i to use CTABLE/match.
=========
343: Wed Sep 10 06:12:10 EDT 1980
starsymb doesnt query and re-specify the adj parameter: leaves it 0 or 1.
----------
Solution:  Mon Sep 15 09:54:10 EDT 1980
Lots of other problems cleared up.  Changed $G/starsy.i and starsy.r.
=========
337: Fri Aug 29 16:05:10 EDT 1980
Starsymb seems to get rid of top margin: no room for title.
----------
Solution:  Mon Sep 15 09:54:54 EDT 1980
See 343.
=========
338: Fri Aug 29 16:05:46 EDT 1980
in stars, radius parameter is INT with default 1, but is documented
as LGL, default FALSE.
----------
Solution:  Mon Sep 15 10:06:44 EDT 1980
Changed documentation.  Also allow graphical parms to stars.
Radius is int since radius=2 implies radii to edge of enclosing circle.
Change $G/stars.i.
=========
320: Wed Aug 20 12:50:25 EDT 1980
In hclust, should use NAFATAL on distance matrix to avoid problems
in the algorithm.  Needed due to change in NA treatment by
interface routines: NAs only checked in arguments.
----------
Solution:  Mon Sep 15 10:15:35 EDT 1980
Changed $B/hclust.i.
=========
346: Wed Sep 10 06:20:45 EDT 1980
The sequence of commands:
photo; plot(...); q
followed by a new session with same commands
produces an sgraph file with no `par' between the frames.
----------
Solution:  Mon Sep 15 13:10:43 EDT 1980
This was result of hermes being out of step with the source:
released code worked correctly.
=========
332: Tue Aug 26 12:27:06 EDT 1980
Create standalone device drivers for stare, prism, photo.
----------
Solution:  Mon Sep 15 14:59:52 EDT 1980
Changed makefiles on $G, $GRZ?../standalone.  Modified indsource/device.c
(which is MADE into devfltr) to turn on deferred graphics for standalone
devices with device code > 0, and to set parameter NEW to false so that
first time produces an eject.
=========
328: Fri Aug 22 15:41:02 EDT 1980
The following files on $P should have either ROUTINE or SUPPORT
lines at the beginning.
albeta.r
alnrel.r
cenerr.r
distan.r
orthog.r
qrce.r
regsum.r
strfld.r
strint.r
trani.f
vprint.r
zzicol.r
zzorth.r
zzqrfa.r
----------
Solution:  Mon Sep 15 15:16:32 EDT 1980
Done.
=========
345: Wed Sep 10 06:18:47 EDT 1980
stem produces lines longer than page width (the arg to stemw is max leaf size
and should be something like page width - 20).
Also, Alan Gross suggests hinges, median, etc be optional.
----------
Solution:  Tue Sep 16 07:24:31 EDT 1980
Change $P/stemw.r to make argument mean actual page width.
Change $B/stem.i to take extra arg "head=" to optionally supress headings.
=========
350: Tue Sep 16 08:47:21 EDT 1980
Create mulbar function for 2-way layout of rectangles.
-----------
Solution:  Tue Sep 16 08:53:37 EDT 1980
$B/mulbar.r $B/mulbar.i.
=========
342: Wed Sep 10 06:10:45 EDT 1980
To prevent buildup of temp files by macro processor, the action
in $M/u/doact.r should unlink the macro-produced temp file
after it is opened.  Then, upon close, it will go away.
----------
Solution:  Wed Sep 17 07:28:53 EDT 1980
Move $B/u/unlink.c to $S and put on $L/lang.
Add MACRO_ACTION to $I/u/action.m, change $B/u/macro.i
to use it, and re-load macro.
Modify $M/u/doact.r to do the unlink for MACRO_ACTION, and re-load executive.
=========
173: Thu Mar 13 15:13:57 EST 1980
Should change INSTALL to make links rather than move from x to $X.
This will ensure that links are kept, even if $X is on different file system
from x.
----------
Solution:  Wed Sep 17 08:11:26 EDT 1980
Too much bother.  All installations should have $X on same file system as
source, now that we are off Mercury.
=========
351: Wed Sep 17 08:18:19 EDT 1980
Rdpen stuff for printer device terminates if user-typed x,y coords
are separated by comma rather than space.  Need more clever
version of $GRZ/u/zquxyz.c.
 ----------
Solution:  Wed Sep 17 08:35:04 EDT 1980
Changed, updatel $L/grz, remade $L/printer, $G/dev.printer
and standalone printer driver.
=========
263: Wed May 28 14:05:04 EDT 1980
If user has done a cd command to get into a non-writable directory
and then invokes S, an infinite loop occurs when S tries to write the
`sdump' file on an error.
----------
Solution:  Thu Sep 18 11:27:37 EDT 1980
Changed $M/exdump.r to use sopen instead of sattac and return
instead of fatal on failure to open.  Reload main.
=========
341: Mon Sep 8 09:24:52 EDT 1980
cancor returns correlations all zero
----------
Solution:  Fri Sep 19 07:18:12 EDT 1980
$B/bgsc.r forgot to form cross-products matrix before doing svd.
Minor changes to cancor.i, cancor.r.
=========
324: Thu Aug 21 13:42:24 EDT 1980
For constructing probabilistic results (e.g., Hoaglin's poisson plot)
there should be functions for the (log)gamma and beta functions.
We probably already have the algorithms in $P. The new functions
should (?) become part of mathfu.i
----------
Solution:  Fri Sep 19 08:19:56 EDT 1980
Create $B/gamma.i which implements gamma and lgamma functions.
Beta(x,y) is just gamma(x)gamm(y)/gamma(x+y) which might cause numerical
problems: no algm in $P for beta.  Not in mathfu because of size, infrequent use.
=========
333: Tue Aug 26 13:13:30 EDT 1980
Executive gets built-in stack cluttered if execution errors happen
inside loops:  Suppose xxxx is not a dataset]
Then repeating the following stmt 3 times causes message
Error: Too many loop variables
for(i in 1)for(i in2)for(i in3)for(i in 4)for(i in 5)xxxx
----------
Solution:  Fri Sep 19 12:03:32 EDT 1980
Changed $M/u/main.c to call sxrset instead of rstmfr.
Changed sxrset to call rstmfr in addition to its old job of clearing
the built-in list.  For some time sxrset was not getting called at all,
probably since rstmfr was created
=========
321: Wed Aug 20 12:51:37 EDT 1980
Function medit should allow pos= argument, which would be passed
oto define.
Define's pos= arg should be documented.
----------
Solution:  Fri Sep 19 12:22:47 EDT 1980
Changed $B/medit.i and documentation.
=========
273: Wed Jun 4 17:08:08 EDT 1980
code doesn't handle logical arguments correctly:
code(male,c(T,F),x("x","o"))
produces an all-NA result.
----------
Solution:  Fri Sep 19 13:05:16 EDT 1980
Changed $B/code.i to coerce LGL first arg to INT (because representation
of LGLs not well defined for use in thash).
=========
294: Thu Jul 10 17:15:41 EDT 1980
Change argument breaks in cut function to be same as in hist:
first value is smallest interval, and any smaller
value coded as NA.  Facilitates using
pretty(x) as breaks arg.
----------
Solution:  Fri Sep 19 14:02:52 EDT 1980
Changed $B/cut.i.
=========
245: Wed May 7 11:23:36 EDT 1980
VU doesn't restore color parameter.  VU still does not interact correctly
with deferred graphics.
----------
Solution:  Fri Sep 19 14:20:57 EDT 1980
Changed $G/vudraw.r to restore color and pty parameters.
=========
353: Wed Sep 24 08:35:16 EDT 1980
dprompt omits the .FN line from the output file.
This causes NEWDOC to lose the documentation (under name tmp4.xxxx)
when it is installed.
 ----------
Solution:  Wed Sep 24 08:47:30 EDT 1980
Add line to $B/dprompt.i to put out .FN line.
=========
Thu Sep 25 16:45:21 EDT 1980
***** MERCURY brought up to date with ALICE.
==========
354: Fri Sep 26 14:30:53 EDT 1980
Need algorithm to produce in on-line manner, the smallest
k values in a sequence.
 ----------
Solution:  Fri Sep 26 14:32:05 EDT 1980
Wrote $P/bestk.r that uses heaps (a la Aho, Hopcroft & Ullman)
for O(n)+O(k log k) algorithm with k storage.
=========
357: Tue Sep 30 06:17:32 EDT 1980
hpgl code gets into trouble when cex=.5 or less.
(puts out S.I9 instead of SI.9 for size .9 cm).
 ----------
Solution:  Tue Sep 30 06:36:08 EDT 1980
Actually should be SI.09; hp25uv.r changed to do it.
Reload $L/hpgl, $G/dev.hpgl.
=========
356: Mon Sep 29 08:22:44 EDT 1980
Modify mstree to provide simple return of minimal spanning
tree without all of the planing/lining stuff (optional).
Also, mstree is currently terminating abnormally. Why?
It seems to only happen with a 10 by 2 example, but not with 25 by 2.
 ----------
Solution:  Tue Sep 30 07:56:03 EDT 1980
Changed $B/mstree.i.  Abnormal termination seemed to occur from stack overwritten.
Fixed (by magic) by allocating scratch array deg to be
at least 100, rather than just 2*n.
=========
358: Wed Oct 1 06:37:04 EDT 1980
Create function to solve napsack problems.
 ----------
Solution:  Wed Oct 1 07:54:11 EDT 1980
Wrote $B/napsack.i napsack.r, etc.
=========
359: Thu Oct 2 11:54:46 EDT 1980
Why doesn'T hardcopy work on Alice?
 ----------
Solution:  Fri Oct 3 15:31:04 EDT 1980
Recompilation fixed it.
=========
364: Mon Oct 6 06:23:22 EDT 1980
Create mechanism for informing S users of new features, etc.
 ----------
Solution:  Mon Oct 6 06:23:52 EDT 1980
$C/NEWS prints a file giving this stuff.  User types "S NEWS".
=========
365: Thu Oct 9 09:29:39 EDT 1980
uniq(c("a","b","c")) gives invalid mode in vector coerce, arg y to uniq.
Also code(....) gives same thing for argument Level.
 ----------
Solution:  Fri Oct 10 08:36:53 EDT 1980
In both cases, a previous fix introduced a conditional COERCE to change LGLs
into INTs.  This affected a later LIKE statement that, since intf.m didn't
know the COERCE was conditional, forced a coerce to INT.
Solved by adding ",ANY" to the LIKE attribute.
=========
363: Fri Oct 3 15:39:33 EDT 1980
Code should not use upper case in its Level argument (or allow both?).
 ----------
Solution:  Fri Oct 10 08:38:53 EDT 1980
Now uses lower case.
=========
375: Fri Oct 17 12:55:51 EDT 1980
Direct axis style doesn't seem to override anything.
For example, plot(1:10,1:10); par(yaxs="d"); plot(1:5)
does not keep the y axis fixed.
 ----------
Solution:  Fri Oct 17 13:12:06 EDT 1980
$GRZ/zstylz.r had its table transposed, and gave wrong actions for "d" style.
Changed, update $L/grz, reload plotting functions 
plot barplot bxp tsplot contour matplot plclust plotfit
=========
373: Thu Oct 16 12:41:24 EDT 1980
Create sampling functions to efficiently generate random samples, permutations.
(Remember, changed ranfun.i to omit unneded declarations, fixed intf.m GETSEED
to supply declarations)
 ----------
Solution:  Fri Oct 17 14:27:33 EDT 1980
New function sample, $B/sample.i tsamp.r rsamp.r isamp.r.
Also fixed bug in $I/intf.m (declare getds with GETSEED)
$I/seeds.m (array tseed needs to be 36 long), 
recompile $S/seedin.r and put on $L/lang, reload runif, etc.
=========
282: Wed Jun 11 10:48:36 EDT 1980
add parameter `mkh' to parameter setting stuff (or just to points)
to allow setting of mark sizes.
----------
Solution:  Mon Oct 20 10:47:59 EDT 1980
Add mkh (128) to $G/grzset.r.  MAKE graphlib points par
=========
378: Mon Oct 20 15:53:01 EDT 1980
state abbreviations on the shared database should be upper case (a la post office).
 ----------
Solution:  Mon Oct 20 15:53:59 EDT 1980
yes
=========
379: Tue Oct 21 06:24:07 EDT 1980
mhuxm!asdfghjk (David Howells) reports problems with nested lists
within vu, specifically bullet lists nested within number lists.
 ----------
Solution:  Tue Oct 21 07:35:51 EDT 1980
$G/vudraw.r changed to keep stack of current list types (only allows
one numbered or general list per stack, since other info needed for
these types).
=========
380: Tue Oct 21 14:33:03 EDT 1980
Add new argument `length' to seq to allow specification of
desired sequence length: much easier to use seq(-3.1415,3.1415,len=100)
than to figure out what the appropriate increment is.
 ----------
Solution:  Tue Oct 21 14:34:25 EDT 1980
Rewrote $B/seq.i to do reasonable things for any combination
of args from, to, by, and length.
=========
381: Wed Oct 22 13:18:13 EDT 1980
seedin and seedot aren't doing the same thing.
Generating runif(20)!=c(runif(10),runif(10)), with same starting seed.
 ----------
Solution:  Wed Oct 22 14:34:45 EDT 1980
Revise $S/seedin.r so seedot correctly copies back all bits of seed.
Update $L/lang & reload rnorm
=========
384: Fri Oct 24 13:08:03 EDT 1980
reg returns wrong coefficients if y==0.
Also if y has all equal values.
 ----------
Solution:  Fri Oct 24 17:46:14 EDT 1980
Two problems: zzorth had a couple of poor tests; e.g. it would try to restart
instead of exiting ifthe initial norm of v was zero or if the norm became
essentially zero during the computations.
Also, gslsi.r and gslsiw.r didn't intialize the gs common block before
removing intercept terms.
=========
385: Wed Oct 29 10:08:08 EST 1980
Modify cstr so that cstr(x,y) where x and y are vectors
produces structure with two vector components.  Currently, each
component is a STR with 1 entry, the data vector.  This causes
a problem, for example, in constructing the Label arg for tprint.
 ----------
Solution:  Thu Oct 30 07:26:09 EST 1980
Modified $B/cstr.i to use deref on each component of the constructed structure.
=========
85: Nov 19
circles(x,y,rad)?  Not easy without this function
Or could have symbols(x,y,circles=r,box=(w,h))
to allow circles or rectangles.
----------
Solution:  Mon Nov 3 12:20:43 EST 1980
D Art wrote $G/symbols.i symbols.r limit.r scaler.r conver.r scalsy.r transf.r
=========
393: Mon Nov 3 15:28:36 EST 1980
seq(1.5,10) generates 2:10!
 ----------
Solution:  Tue Nov 4 08:15:36 EST 1980
Modified  $B/seq.i to look at "from" arg for integer value rather than max(from,to),
since sequence may not actually reach "to".  This may cause real sequences
some times if from is very near zero, but should at least do the right thing
in most cases.
=========
394: Tue Nov 4 11:35:27 EST 1980
Rodriguez at WH reported problems with setting up new device driver.
1) FUNCTION -d put $L/device.x (not .z) into Smakefile
2) S COMPILEALL uses MAKE , not S MAKE
 ----------
Solution:  Tue Nov 4 11:53:57 EST 1980
Modified $C/COMPILEALL and FUNCTION.
=========
395: Tue Nov 4 15:09:09 EST 1980
restore dies trying to restore a character vector of length 7700
with each character string 1 char long.
Reason:decv00 has been allocating string fields of length 126 regardless
of actual length of field.
 ----------
Solution:  Tue Nov 4 15:39:25 EST 1980
Fix decv00.r to use FIELDPOS rather
than FIELDLEN.
Update $L/psl for new decv00.o
Reload restore and dget.
=========
360: Thu Oct 2 11:55:10 EDT 1980
Create convex hull program.
 ----------
Solution:  Wed Nov 5 07:03:33 EST 1980
Function chull.  See $B/chull.i chull.r chpeel.r and detailed doc.
=========
387: Wed Oct 29 14:44:03 EST 1980
Make an interface from an S matrix to the tbl preprocessor for [nt]roff.
 ----------
Solution:  Wed Nov 5 09:28:43 EST 1980
Function tbl installed.
=========
389: Fri Oct 31 13:27:15 EST 1980
The TAB macro sends out two null characters because it figures out the length based
on the input to ratfor( 3 chars), not the output (1 char).
Better have a tab macro in print?
 ----------
Solution:  Wed Nov 5 09:29:38 EST 1980
Macro TABCHAR added to $I/print.m. (Only needed when literal tabs
needed in output=>specialized (currently only in tbl).)
=========
388: Thu Oct 30 07:26:46 EST 1980
Problem with dput: seems to have trouble printing NULL names when restarted
(no problem if nproc is 1).  See printout of problem.
 ----------
Solution:  Wed Nov 5 12:40:31 EST 1980
Dput had first time flag that initialized pointer to stack.  When re-entered,
it thought the pointer was still good, when actually the stack had been cleared.
Changed $S/dput.r ($L/lang) and reload $B/dput, dump.
=========
397: Wed Nov 5 12:31:46 EST 1980
Problem with applying function range via ?col() macro.
The macro generates apply(x,2,"range",) and the trailing
comma causes invalid vector mode msg from range.  Works without comma.
 ----------
Solution:  Wed Nov 5 13:57:19 EST 1980
Modify $B/min.i to ignore NULL and MISSING args.  Reload min.
=========
398: Wed Nov 5 15:40:56 EST 1980
aperm does not preserve NAs.
 ----------
Solution:  Wed Nov 5 15:41:36 EST 1980
Change $B/perma.r to use pcopy rather than direct assignment.
=========
400: Tue Nov 11 15:36:04 EST 1980
Allow more control over structure names: (1)let cstr take an arg. sname=;
(2)have dput and dget put and get structures which can have both
a component name & a structure name.
 ----------
Solution:  Tue Nov 11 15:37:22 EST 1980
Done. The structure name in dput comes after the S mode.
The modification to dget looks ahead to see whether there is a structure
name or not. This is a little unclean, but assures compatibility across
machines if we import old version structures.
Needed: New versions of dget.o & dput.o for $L/lang; New routine decsp0.o
on $L/psl; New version of $I/read.m. New functions cstr, dget, dput, dump, restore.
=========
401: Wed Nov 12 10:15:39 EST 1980
Program utility should not insist on directory being an S chapter.
 ----------
Solution:  Wed Nov 12 10:16:21 EST 1980
$C/PROGRAM changed.
=========
Thu Nov 13 09:44:52 EST 1980
***** MARS (aka MERCURY) brought up to date with ALICE
==========
405: Fri Nov 14 07:00:08 EST 1980
We need procedure for sending out updates to modified functions to other sites.
 ----------
Solution:  Fri Nov 14 07:00:47 EST 1980
$C/GETFUNCTION provides this mechanism.  Source files and an installation script
are sent via uucp to remote site.  This can be run from any MHCC machine.
=========
406: Mon Nov 17 10:46:42 EST 1980
The share function does not work; share(); search(1)
shows that the shared chapter is not attached, and further
invocations of `share' really screw up the list.
 ----------
Solution:  Mon Nov 17 11:13:29 EST 1980
Just reload...problem went away.
=========
407: Tue Nov 18 10:44:56 EST 1980
The revised version of dget doesn't work with restore.
Problem is that only the SNAME is checked to find
a name for structures, even tho the NAME may be non-null.
 ----------
Solution:  Tue Nov 18 10:46:15 EST 1980
Function restore revised.
Now checks both SNAME and (if this is null) NAME.
If both are null, generates name rather than dying.
=========
408: Fri Nov 21 10:04:12 EST 1980
State.abb is screwed up wrt state.center, i.e. NY is in North Dakota.
 ----------
Solution:  Fri Nov 21 13:31:30 EST 1980
Re-ordered.  State.abb is supposed to be in order of alphabetical state names.
=========
412: Mon Dec 1 10:44:24 EST 1980
Speed up smatrix by not printing Backspace-blank combinations
Allow column labels to be printed at bottom.
 ----------
Solution:  Mon Dec 1 10:59:47 EST 1980
Fixed smatri.r  smatri.i.
=========
295: Fri Jul 11 13:40:25 EDT 1980
source cannot use char. strings in datasets; b_"abc";source(b) just returns
but source(b$[1]) is ok
get dies (Memory Fault in main) on similar b. Also dies on get(b$[1]), but
not on get(b$[1],pos=1)
----------
Solution:  Thu Dec 4 14:18:04 EST 1980
Fixed $M/u/funev.r $M/u/doact.r to deref & check for mode CHAR in get & source
(At same time, moved funev from $IM to $M & made $M/u/link.c set internal
common block to FALSE. Prevents copy problems with funev)
=========
260: Tue May 27 14:38:56 EDT 1980
The "... not found" message should include the prefix if one
has been specified.
----------
Solution:  Thu Dec 4 14:20:48 EST 1980
$M/u/funev.r changed to use fixname before printing message
=========
414: Wed Dec 3 16:59:04 EST 1980
Put a parameter "axis" into the
axis function. If FALSE, the whole axis plotting is suppressed.
Otherwise, the user must specify 3 parameters to suppress all axis drawing
 ----------
Solution:  Thu Dec 4 14:21:51 EST 1980
New version of $G/axes.i
=========
396: Wed Nov 5 12:11:46 EST 1980
Device driver functions seem to need to return parms
to prevent the executive from aborting.  Fix executive or
change manual section 8.7 (Bob Rodriguez WH3503)
 ----------
Solution:  Thu Dec 4 14:31:51 EST 1980
Change macro DEVICE_DRIVER to generate a result `junk' in any case
=========
417: Mon Dec 8 13:56:47 EST 1980
When using par(fig=), should not get go= message from next plot.
Should use drfigz, drpltz.
 ----------
Solution:  Mon Dec 8 14:08:43 EST 1980
Change $G/setpar.r to use drfig, drpltz.
=========
416: Mon Dec 8 11:26:41 EST 1980
Plotting on the HP722x should figure out how to lift the pen
after doing lines, etc. Otherwise, an identify or rdpen immediately
following will mess up the user's plot.
 ----------
Solution:  Wed Dec 10 07:49:01 EST 1980
Change $GRZ/../hp72source zflshz.r zparmz.r to put out "p"
character on flush (pick up pen).  Reload hp72, $G/dev.hp72.
Also $GRZ/../standalone MAKE hp72.
=========
410: Sat Nov 22 10:40:36 EST 1980
Revise approx to include a regression smooth (similar to lowess
but evalutated at a prescribed set of xout values, not at all data points.
 ----------
Solution:  Wed Dec 10 16:58:35 EST 1980
For the moment, the best solution seems to be to do
  approx(lowess(x,y,...))
Trying to make a simpler (& cheaper) version of lowess is probably not worth
the effort.
=========
329: Fri Aug 22 15:52:41 EDT 1980
The following routines on $S have neither ROUTINE or SUPPORT macros.
Most of the .r's are support, but some of the .c's should be documented.

alcars.r	alcdir.r	alcfn2.r	alchis.r	alcif.r
alcmas.r	alcst1.r	alctss.r	alcves.r	bltin.r
bltloc.r	coears.r	coehis.r	coemas.r	coetss.r
coevec.r	coeves.r	copys.r		cpdir.r		cpdirx.r
dget.r	dput.r	fixnam.r	fndsrc.r	getvec.r	gtsprt.r
ibltin.r	ientry.r	locsrc.r	numsrc.r	nxtsub.r
prtars.r	prtmas.r	prtmt2.r	prttss.r	prtvc2.r
prtvec.r	rclab.r		seedin.r	serrpr.r	sublst.r
swarnp.r	trlit.r		updsrc.r	xtfrom.r	zrrepz.r
zzrtrn.r	u/alias.c	u/cmnctl.r	u/excmd.c	u/funchk.r
u/gtstk.r	u/isblt.r	u/isfun.r	u/kill.c	u/killem.c
u/mknam.c	u/mktemp.c	u/oreset.r	u/prehsh.r	u/rdinstr.c
u/rewnd.r	u/rwstak.c	u/sgets.c	u/sputs.c	u/ssnap.c
u/statck.c	u/strdup.c	u/strip.c	u/wakeup.c	u/wtout.r
u/wtoutstr.c	u/xor.c		u/zzint.c
----------
Solution:  Fri Dec 12 06:55:13 EST 1980
Done.
=========
372: Wed Oct 15 17:59:17 EDT 1980
Develop a technique for having S functions as internal (part of the current
program rather than a separate process). Has at least two applications:
(1)Make the commonly used functions part ofthe executive (esp. for paged systems)
(2)Allows the creation of nonlinear fitting functions in which the model is
 written as an S function & then is loaded with a fitting function to make
 a (model specific) fitting function. More efficient than having the model
 as an external function or an S expression, but allows user access to
 S features in writing the model function.
 ----------
Solution:  Sun Dec 14 12:15:47 EST 1980
The special version of link & the supporting routines in directory $IM
implement this. Not currently being exported to MHCC machines because of
linear charge for memory. Needs a document. Application to fitting not done.
=========
413: Wed Dec 3 15:16:49 EST 1980
outer doesn't seem to work right with the internal functions(?)
For example, "outer(seq(9),seq(9))" gives an error message
"Bad operator: outer"
Seems not to be getting the name right on ther CHAIN.
 ----------
Solution:  Sun Dec 14 12:17:14 EST 1980
Problem is that the outstr is read in by doact, but the chain to "*" or whatever
does not get the evaluated outstr. In fact, no chains to internal functions
would work (principally sweep and outer).
Solution (inelegant) is to add an argument, result, to doact which gets
set to the evaluated outstr. This is used to chain to internal functions,
and outstr continues to be used to chain to external functons. Better would
be to make all outstr's consistent; e.g., by having the external version return
a legitimate structure of mode STACK, rather than a naked stack file position.
=========
420: Fri Dec 12 16:34:05 EST 1980
sweep and outer dont work when chaining
to an internal function. Somewhere the name of the called
function gets to be sweep, so oplkup, e.g., cant find it.
 ----------
Solution:  Sun Dec 14 12:20:55 EST 1980
This is the same as entry 413, to which see the solution.
=========
423: Mon Dec 15 09:09:01 EST 1980
Fix up Cp macro and documentation to be consistent.
 ----------
Solution:  Mon Dec 15 09:09:34 EST 1980
Change mac.Cp, its documentation, and $GUIDE/macro/d.9 (listing).
=========
424: Wed Dec 17 12:55:47 EST 1980
Add parameter new to `par', to allow pictures to overlay one another
even if there is no add=T parameter.
 ----------
Solution:  Thu Dec 18 08:45:02 EST 1980
Change $G/setpar.r, MAKE par.
=========
425: Thu Dec 18 08:16:01 EST 1980
Fix up the way interrupts are handled for device drivers
by allowing optional device-dependent interrupt processor.
 ----------
Solution:  Thu Dec 18 08:45:54 EST 1980
New routine zintrz called by device driver on interrupt.  Default version
just calls zflshz.  $I/u/driver.m $G/device, $GRZ/zintrz.r (default)
put zinitz.o on $L/grz.  $GRZ/../indsource devfltr (for standalone).
=========
427: Mon Dec 22 07:35:39 EST 1980
Problem in plotfit: gets messed up if NAs in row or column effects.
 ----------
Solution:  Mon Dec 22 08:47:43 EST 1980
Plotfit used to rely on implicit NAFATAL to avoid these problems.  Modifiec
to allow NAs in row or col effect.
=========
404: Thu Nov 13 16:58:27 EST 1980
Let the pairs function (and macro?) have the optional argument `full'
which produces the full p by p array with missing diagonals,
rather than the p-1 byy p-1 triangule.
Also, allow an argument `text' to supply character strings for the n observations
instead of using the plotting char.
 ----------
Solution:  Mon Dec 29 16:12:53 EST 1980
Fixed the  function. Forget the macro for now.
=========
437: Tue Jan 6 15:57:50 EST 1981
There is no reason not to detach chapters in UNIX. This is a carry over from
the hash table on GCOS.
 ----------
Solution:  Tue Jan 6 16:00:42 EST 1981
Added an argument `detach' to chapter. Also fixed the ugly error message
"cannot attach abc/x" when a chapter to attach doesn't exist.
=========
229: Thu Apr 24 07:48:37 EST 1980
var dies when given vector of length 1.
----------
Solution:  Tue Jan 6 17:10:34 EST 1981
Fix corvar.r so that it gives 0 for variance with df<=0. & correlation
of NA whenever the denominator is 0.
=========
442: Fri Jan 9 12:47:52 EST 1981
mprompt puts out extraneous .PP prior to .RT.
 ----------
Solution:  Fri Jan 9 12:50:42 EST 1981
Removed from $B/mprompt.i.
=========
443: Fri Jan 9 16:31:04 EST 1981
The cut function, if given a dataset as the label vector
keeps the structure information. This causes table to die
because it doesn't think the label is a character vector.
 ----------
Solution:  Fri Jan 9 16:32:39 EST 1981
Modify cut.i to declare argument lab of type VECTOR, so all struct. inf is
thrown away
=========
435: Mon Jan 5 08:16:26 EST 1981
Fix $GRZ/barz.r bhtchz.r onto $L/grz.
Add argument beside= to barplot to allow divided-style
bars to be plotted side-by-side rather than atop one another.  Spaces
would be larger between groups of bars than within a group.
 ----------
Solution:  Fri Jan 9 18:05:00 EST 1981
Add beside argument. Also change arg space to be a real giving
the space wanted before each successive bar.
The default is arranged so that beside=T causes some space to
be supplied between bars, but sub-bars are adjacent.
At the same time, added an argument color so that the user
can specify that the shading of the bars
(whether divided or beside) should be in different colors.
Note that the argument width must be of length NROW(height)*NCOL(height)
if beside=T.
=========
444: Mon Jan 12 12:10:32 EST 1981
Change argument labels of starsymb to collab to avoid confusion
with similar labels= arg of stars.
 ----------
Solution:  Mon Jan 12 12:18:23 EST 1981
Done.
=========
439: Wed Jan 7 16:02:04 EST 1981
Symbols function does not handle NAs properly in x,y args
(perhaps not in circles, etc either).
 ----------
Solution:  Mon Jan 12 12:26:51 EST 1981
For now, make NAs FATAL.  Later, can fix things up.
=========
451: Mon Jan 12 12:34:00 EST 1981
detach should allow detaching working db.  Revise doc.
 ----------
Solution:  Mon Jan 12 12:39:25 EST 1981
Take error check out of $B/detach.i (was there for Honeywell).
=========
455: Mon Jan 12.
rev should strip its arg. structure to a vector, since it changed
the order of the data.
 ----------------
Solution: Tues Jan 13 13:---
Done. (This log entry got clobbered during system crash).
=========
464: Wed Jan 21 12:37:25 EST 1981
Typed "S" and shortly got "TERMINATING, can'T kill process 2149928272736"
PS command showed only sys.boot active, presumably the process that wasn't killed.
Could not recreate.  Moderate load on machine.
See $HOME/Bbugs/boot.core for dump.
 ----------
Solution:  Fri Jan 23 12:44:45 EST 1981
Problem seems to be that child can complete before parent gets the process
id back to link. Solution is to catch SIGTERMS in catcher (in link), record
that it's caught & then continue normal execution (no long jump).
Files affected $M/u/link.c $IM/u/link.c.
MAKE S and MAKE INSTALL in $M or $IM.
=========
433: Mon Jan 5?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:02:29 EST 1981
=========
434: Mon Jan 5?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:02:43 EST 1981
=========
436: Tue Jan 6?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:02:58 EST 1981
=========
438: Wed Jan 7?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:03:12 EST 1981
=========
440: Thu Jan 8?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:03:34 EST 1981
=========
441: Thu Jan 8?
This entry clobbered during file system crash.
----------
Solution:  Fri Jan 23 13:03:48 EST 1981
=========
262: Tue May 27 17:35:15 EDT 1980
Couple of times this afternoon I got the message "S caught bad signal 1"
when I logged off after completing a session. It was as if 2 versions
of S got spawned. Quitting got rid of one but the other lasted
until it got the hang-up. Clues(?): terminated with EOT and had
graphics device running.
----------
Solution:  Fri Jan 23 13:51:18 EST 1981
This never recurred - red herring or got solved accidentally.
=========
272: Wed Jun 4 15:45:09 EDT 1980
The RIGHT way to initiate process is to load them (if needed)
and then in any case come back to link. The function doesn't
start computing until it gets a SIGTERM (even on 1st time).
Then we can send signal from link after the process table is updated
and interrupts are off; it then immediately goes into wait
while function executes. Otherwise the SIGTERM
from function can interrupt computation in main.
Are there still problems if child process gets interrupt
before the exec can happen? Would require some mechanism
to pass batch s
information to child & then always be ignoring interr's
on fork.
Related fix to make at same time: change LONGWAIT to be really long
(several hours?) and then have the function commit suicide if it ever
gets the alarm signal. Would ensure that functions left
orpahaned (say by TERMINAL in a batch run) would eventually disappear.
----------
Solution:  Fri Jan 23 13:55:38 EST 1981
Essentially solved by the catcher in bug 464's solution.
=========
334: Tue Aug 26 14:16:48 EDT 1980
At various times, the executive terminates with message
Cannot Kill process 69876 
(usually process number much too large to be correct).
WHat causes this?
----------
Solution:  Fri Jan 23 13:59:20 EST 1981
See 464.
=========
469: Fri Jan 23 15:38:35 EST 1981
The CHECK macro doesnt have enclosing {}, so an else on the next line
will get attached to the if in CHECK. If we aren't going to remove
all CHECKs, this should be fixed (Caused a problem in rbiwt)
 ----------
Solution:  Fri Jan 23 15:53:27 EST 1981
the CHECK macro in $I/stand.m changed to have {} around complete definition
=========
409: Sat Nov 22 10:19:02 EST 1980
The rbiwt algorithm ($P/rbiwt.r) never uses its starting values. If they
are 0, it uses least-squares start, otherwise ignores ai,bi
 ----------
Solution:  Fri Jan 23 15:54:27 EST 1981
fixed $P/rbiwt.r, reloaded on $L/psl, reloaded rbiwt function
(Required fix to CHECK macro; see bug 469).
=========
466: Fri Jan 23 12:47:18 EST 1981
fix apply & sapply to correspond to solution to bug 464, by modifying
$B/u/alink.c
 ----------
Solution:  Fri Jan 23 17:02:22 EST 1981
$B/u/alink.c changed, apply & sapply reloaded
=========
472: Tue Feb 3 14:12:34 EST 1981
The tests on parameters in $P/qlnor.r are wrong. We assume that the
parameters are given on the logged scale, but the test acts as is
they were on the exponentiated scale. Makes both rlnorm and qlnorm
incorrect.
 ----------
Solution:  Tue Feb 3 14:14:26 EST 1981
Remove the test from $P/qlnor.r, recompile & replace on $L/psl.
Reload qlnorm and rlnorm.
=========
478: Thu Feb 12 17:48:56 EST 1981
The INCLUDE macro in $I/intf.m should check for args like `stack'
that will cause death in FORTRAN & ignore them, perhaps w. warning message
 ----------
Solution:  Fri Feb 13 10:39:54 EST 1981
intf.m changed, checks for stack and print; prints warning message
=========
479: Fri Feb 20 10:43:40 EST 1981
Shaky area of program discipline when both ratfor & c routines use the
same common block (extern array). Need a mechanism in the INCLUDE
file to ensure equivalent references.
 ----------
Solution:  Fri Feb 20 10:52:36 EST 1981
define macro `BASE_LANG' to be c, ratfor & efl in $I/u/cdefs.m; ratfor.m & efl.m
An include file can then condition on the base language & generate
consistent common declarations. Still need to know the name of block in c
and the name of the entries in block in rat/efl, but at least the information
is defined in one place only. (Example is $I/u/infun.m)
=========
484: Wed Feb 25 11:47:59 EST 1981
Modify S to notify user if the current directory is unwritable.
 ----------
Solution:  Wed Feb 25 11:48:47 EST 1981
Change $C/SETUP.S and /usr/bin/S.
=========
483: Wed Feb 25 11:21:51 EST 1981
Change to operating system exposes a bug when we create a file
(== open it for writing). The file descriptor should be closed
prior to invoking a command that needs to write on the file.
 ----------
Solution:  Wed Feb 25 12:12:14 EST 1981
medit.i fixed to close outfc
=========
482: Tue Feb 24 13:39:08 EST 1981
Add device prsmv to BPLOT.
Allow printed output and prism/stare output to be remoted.
 ----------
Solution:  Thu Feb 26 11:32:52 EST 1981
Changed $C/BPLOT and documentation.  Created on GCOS sport/prsmv
for vugraphs.
=========
370: Tue Oct 14 06:24:24 EDT 1980
Fix up BPLOT to allow remote stare, prism (via REM= option?).
 ----------
Solution:  Thu Feb 26 11:33:42 EST 1981
Done via Shell variables (see 482).
=========
485: Wed Feb 25 12:09:36 EST 1981
Fix up MAKE to remove $T/ files prior to compilation.
Otherwise, alice may give any $T files left overnight
to s, preventing the actual user from writing on them later.
 ----------
Solution:  Fri Feb 27 08:49:17 EST 1981
Change $C/makehead, MAKE.  Make rules now compile in $T and
move .o file to correct place in user's area.
On errors, MAKE now prints the name of directory for finding files ($T).
Many Smakefiles were changed (cosmetically) to avoid using
-ln, -ld (which gave MAKE message Error Code 1: Ignored)
and instead use || true.
=========
489: Fri Feb 27 13:53:10 EST 1981
Fix up default values for stare and prism character size:
should be 12 by 20 rasters, not 9 by 13.
 ----------
Solution:  Fri Feb 27 14:03:59 EST 1981
Changed $G/prism.r stare.r.  Reload dev.stare dev.prism $GRZ/../standalone -
stare and prism.
=========
465: Fri Jan 23 09:00:30 EST 1981
Floating exception in printing causes internal function
version of S executive to die. Error occurred in zrrepz.
 ----------
Solution:  Mon Mar 2 09:24:18 EST 1981
New version of $M/u/catchall.c warns on FPEs, dies with good message on others.
=========
467: Fri Jan 23 13:46:47 EST 1981
Alter the non-internal main ($M) to get the fix made to bug 464.
Move $IM/u/link.c to $M. Make dummy version of u/infun.c that always
returns FALSE and dummy inact.r (never gets called).
 ----------
Solution:  Mon Mar 2 09:25:46 EST 1981
Done.
=========
491: Tue Mar 3 09:00:33 EST 1981
Change makehead so that fortran programs do not go through macro
processor.  Otherwise, upper case imported fortran algms will have
READ() transformed, etc.  Especially important for S PROGRAM.
Code that wants to make use of machine constants via macros can be
turned into ratfor.
 ----------
Solution:  Tue Mar 3 09:53:15 EST 1981
Done.  Also changed $P/trani.f psort.f psorti.f into ratfor so taht
ROUTINE and ERROR macros would be ok.
=========
492: Thu Mar 5 07:45:13 EST 1981
Modify grz axis routines so that out of bounds ticks and labels are supressed.
 ----------
Solution:  Thu Mar 5 08:05:34 EST 1981
Change $GRZ/vaxisz.r vtickz.r, replace on $L/grz.
=========
362: Fri Oct 3 15:37:37 EDT 1980
Create axis function for re-plotting axes (sides 3 and 4) as in S Version 2.
Could also allow plotting of data (numerical or char. strings) `at' specified
positions, and the plotting of tick marks alone. Would permit generation
of transformed axis (e.g., prob. axis for q-q plots) & could even take
symbolic definition of the transformation.
 ----------
Solution:  Thu Mar 5 13:27:41 EST 1981
NEw function $G/axis.i.
=========
494: Thu Mar 5 14:17:02 EST 1981
The interface language is inconsistent about what it does to the MISSING
attribute. After ARG(x/REAL,OPTIONAL/), a statement
STRUCTURE(x/REAL,1,1./) leaves MISSING(x) true, but
STRUCTURE(x/REAL,LIKE(yy)/) leaves MISSING(x) false.
 ----------
Solution:  Thu Mar 5 15:29:39 EST 1981
The chosen consistent rule is: MISSING is only set by allocating
in such a way that the dataset could really BE missing; namely,
through arguments or the FROM option. All other forms
of allocation leave MISSING unchanged.
To implement this requires changing the LIKE expansion in the interface
macros to  change the interal allocation macro (QA) rather than
the more fundamental "get it" macro (QG)
Note side effect of this change: a dataset created by LIKE now has a null
dataname, whereas before it inherited the dataname of the copied structure.
=========
495: Fri Mar 6 07:56:19 EST 1981
Create functions for dealing with ragged arrays.
 ----------
Solution:  Fri Mar 6 07:57:13 EST 1981
New functions tapply and index.
See $B/tapply.i tsectn.r, $B/index.i.
=========
Fri Mar 6 08:44:00 EST 1981
**** MARS brought up to date with ALICE (except for trivial changes
to source files, some HELP files, and minor Makefile changes).
=========
496: Tue Mar 10 09:18:54 EST 1981
Functions that hafe zzabt called twice without being pushed off
the active list terminate on second zzabt.
 ----------
Solution:  Tue Mar 10 09:34:56 EST 1981
Bug in the way $I/u/cinter.m  used error flag. New fixed.
=========
474: Thu Feb 5 14:37:30 EST 1981
Errors occuring in the reset (oreset) should be terminal.Otherwise
the function loops forever on the same error.
 ----------
Solution:  Tue Mar 10 09:35:42 EST 1981
Add "errors" flag to $I/u/cinter.m.  
Probably no need to reload anything.
=========
236: Fri Apr 25 11:07:17 EST 1980
>From cew Fri Apr 25 10:54:52 1980 forwarded by smail
To: smail
Subject: Suggestions for S and the S-manual

In no particular order:

5) I mentioned to Rick yesterday, that I would like to
   see more consistent (and tolerent) treatment of NAs; and
   especially that their current treatment by each function be
   more fully documented.  For instance, mean, var, and sum
   each handle NAs differently, but the documentation
   gives no hint of this.

8) Would it be possible to allow compound statements as
   functions to apply.  This would really extend their
   usefulness.

9) A perhaps minor suggestion on the language, I think that
   the sequence operator <:>, should have a precedence
   lower than the arithmetic operators, although I can see
   both points of view.

10)Suggested error message: 3rd subscript (value 123) out of bounds on x.
----------
Solution:  Wed Mar 11 08:11:48 EST 1981
Number 5) same as entry 54.  Number 8 is too hard.  Number 9 no change desired.
Number 10 completed.  $S/sublst.r changed onto $L/lang.
$B/subset.i and replac.i changed for better messages (and subscripting
of categories).  Reload $B/replace $B/subset.
=========
374: Fri Oct 17 11:05:23 EDT 1980
When a really bad signal comes in (illegal instr, etc.), catchal
should terminate, not just fatal. This eliminates infinite loops
and provides core files.
 ----------
Solution:  Wed Mar 11 08:15:13 EST 1981
Completed earlier: code in $M/u/catchal.c.
=========
242: Fri May 2 10:17:11 EDT 1980
>From uucp Thu May  1 17:54:46 1980 forwarded by smail
>From maron Thu May  1 17:50:19 1980 remote from mhuxh
1) About "reg":
  a) The description of the outputs "r",
   "corth" and"q" is not very informative, and the user
 is not told of any other reference. Even for those
  who know about the QR decomposition, I find the description
  too casual.
  b) More diagnostic output ought to be given, at least as
 an option. At least, the diagonal elements of the HAT
 matrix, and the studentized residual;s. A further (more
 bulky) option may be the vmatrix (X'X)**(-1) X , where X is the
 design matirx. Thus one can calculate the effect of
 dropping one observation.

  2)  About ""twoway"*
  The resutls depend in a curious manner upon the value of
  the parameter "trim". For a 3*4 table with positive elements,
 , I obtain reasonable results with trim= 0.50, 0.40 0.25 or 0.0.
  But if I choose trim = 0.29 or 0.37, the results are
  psychedelic, e.g. negative total and strange residuals.

  3) About "rreg" (in the Honeywell)
   It seems that one may use only the simlest options,
  but not e.g. the weighted version, nor the full list of psi-
functions promised. At least, my attemmpts to do so failed.
  It would be very important to complete the capasbilities
 of the procedure, or else to tell the user what can now actually
  be done.
                       Best wishes.
                 Ricardo Maronna    MH 2C-476   Ext./ 2086.
>From uucp Fri May  2 12:37:56 1980 forwarded by smail
>From maron Fri May  2 12:34:33 1980 remote from mhuxh
More about "reg":
  When using weights "wt"), points with weight exaactly =zero have residuals
 =1.701e38. Those with very small weights may have very strange residuals.
 How are the residuals computed?. The user should be at least
 warned that this may happen.
     Sincerely yours
        Ricarso Maronna.  MH 2C 476.


----------
Solution:  Wed Mar 11 08:19:34 EST 1981
1) components q,r,corth not really meant for users to use.
1b) possible later for hat function, etc.
2) no obvious problem.
3) Honeywell version definitely not correct.
4) pts with zero weight get NA residuals now.  May later be fixed 
(see #383.
=========
229: Thu Apr 24 07:48:37 EST 1980
var dies when given vector of length 1.
----------
Solution:  Wed Mar 11 08:21:39 EST 1981
Previous fix makes it return 0.
=========
248: Thu May 8 08:52:30 EDT 1980
When mismatch occurs between device driver and device independent code, 
Mismatch is printed out and terminal is locked out because noone
is listening.
----------
Solution:  Wed Mar 11 08:22:15 EST 1981
True, but it never seems to happen any more.
=========
355: Fri Sep 26 18:07:47 EDT 1980
Current $I/u/cinter.m is not resistant to errors which occur
outside the actual interface routine. For example, an error
in oreset or in clearing th stack can cause looping.
Also, the signal to the main should be the last thing
done in the loop. Need some way to know that we weren't
in the loop (e.g., working variable). This should
be used to avoid looping on errors.
 ----------
Solution:  Wed Mar 11 08:23:32 EST 1981
Done.
=========
309: Mon Jul 28 15:46:46 EDT 1980
Two requests from Daryl for glim:
 1) in order to use binonmial models in glim,need a denominator dataset.
  Make denom a final optional arg to glim.i; if`link' has b forthe first
  character, add " denom" to the $link directive as printed, and read
  a `denom' dataset into glim, for nobs length. (default 1's)
 2) allow matrices as variates, put out all columns as separate data.
  Could be done by coercing to matrix, making separate `pdata' entry
  for each column
----------
Solution:  Wed Mar 11 10:07:24 EST 1981
Done some time ago.
=========
77: Nov 15
PSL algms using R1MACH--why R1MACH(3) and not (4)?
Find interdata constants.
----------
Solution:  Wed Mar 18 14:14:44 EST 1981
That's the way it is on port, no change. The inter-what??
=========
502: Wed Mar 18 11:16:00 EST 1981
It should be possible to use capital "O" rather than zero "0"
on hp72 devices.  This would not give slashed zeroes on the plots.
 ----------
Solution:  Wed Mar 18 15:43:33 EST 1981
Done. Zero and Oh are identical on this device except for slash.
Users who need to distinguish the two can use lower case.
=========
501: Wed Mar 18 10:46:46 EST 1981
FUNCTION utility should add any flags as comments to the makefile
so that the file contains all information needed for describing dependencies.
 ----------
Solution:  Wed Mar 18 17:30:25 EST 1981
Changed $C/FUNCTION, $G/Smakefile, $B/Smakefile (to reflect current
flags in i/*.c files).
=========
507: Fri Mar 20 14:47:42 EST 1981
NAs in file read by `read' become zeros (if all are INT). 
 ----------
Solution:  Fri Mar 20 15:21:14 EST 1981
$S/inputd.r screwed up NAs by assigning to real before testing.
Changed and put on $L/lang.  Reload read.
=========
504: Wed Mar 18 16:25:38 EST 1981
The symbols function produces ellipses with square plots:
par pty="s"; symbols(.5,.5,cir=.3,add=T)
 ----------
Solution:  Wed Mar 25 13:01:47 EST 1981
Change $G/conver.r to query pin, not fin.  Reload.
=========
510: Tue Mar 24 09:59:14 EST 1981
Add capability for enhanced (bordered) characters to vu.
For example, use emboldening code, but first n/2 overstrikes
in black, next n/2 in current color.  Gives 3-d effect.
 ----------
Solution:  Wed Mar 25 15:28:42 EST 1981
New $G/vutext.r.  Reload vu.  Minor changes to vudraw, vusymb.
Also $G/vusetz.r for restricted character sizes with vu.
=========
505: Thu Mar 19 13:11:27 EST 1981
Coerce operator does not ensure that result is a vector, thus
a non-vector (time series, etc) used as the condition of the
`if' syntax, may not be recognized correctly by steval.
If sex is category, if(sex[1]==1) ...  done incorrectly.
 ----------
Solution:  Thu Mar 26 07:13:30 EST 1981
Create new function for use by executive in `if'
called `coelgv' (coerce to logical vector).
$B/coelgv.i.  Change $S/alcif.r to create call to coelgv,
change $M/u/funev.o to evaluate result of coelgv.  New main.
=========
509: Mon Mar 23 07:55:49 EST 1981
Got message "longjump botch" after I had typed
medit mac.abc
mac.abc not found
(correct message, I had mistyped the name).
Non-reproducible.
Try printing something bug, and hitting interrupt.
Then execute an unknown function e.g., xxxx(1).
Possibly that intjmp code is preventing the reset of the
abtjmp address.
 ----------
Solution:  Thu Mar 26 07:15:58 EST 1981
Change $IM/u/inlink.c to save and restore both the
abtjmp and intjmp buffers.  What happened was that an interrupt
inside `print' in the executive ripped control out of inlink
without restoring the abtjmp buffer.  The next call to zzabt
caused the longjump botch.  New internal main.
=========
508: Fri Mar 20 15:01:44 EST 1981
Arith on time-series broken.
a<-ts(1:5,start=1950); a+lag(a)
prints 1950  2  4  6  8
not time-aligned coorectly.
 ----------
Solution:  Thu Mar 26 07:57:19 EST 1981
$B/coeops.r reset VALUE(e1), VALUE(e2) rather than setting value1,value2
when operating on time series.
Changed, reload $B/infixo, $IM/S.
=========
514: Thu Mar 26 13:43:55 EST 1981
Weird code in $GRZ/bplotz.r -- computation of hc,vc
is inefficient and wrong (except that the wrong term
is multiplied by zero).
 ----------
Solution:  Thu Mar 26 13:45:48 EST 1981
Fixed up the wrong term, left the inefficiencies
which multiply terms by zeros.
=========
498: Wed Mar 11 11:07:25 EST 1981
The expression x[y=1] (incorrect version of x[y==1])
causes a memory fault in the executive.
 ----------
Solution:  Thu Mar 26 14:50:45 EST 1981
$B/subset.i checks for any name= args and issues message.
=========
419: Thu Dec 11 10:42:47 EST 1980
`tsplot' does not correctly allow log="y".
 ----------
Solution:  Mon Mar 30 08:08:19 EST 1981
Modify $I/intf.m to correctly assign args to SETUP
macro to xl,xu, yl,yu.  Also change $G/tsplot.i
to allocate fake y data which is put through logtrn
by SETUP.  Problem was that logtrn encountered one zero, gave
warning about it, and then fatalled since it could not get
a range for the data.
=========
471: Tue Jan 27 12:28:55 EST 1981
Eliminate the maximum number of datasets limit from `ls'.
(In $B/u/dlist.r).  Also, get rid of number of items to read
in `read'.  In both cases, could re-allocate the space
when overflow happened.
 ----------
Solution:  Mon Mar 30 12:55:50 EST 1981
Changed $B/read.i and $S/inputd.r (on $L/lang).
Also $B/u/dlist.r.  Reload ls, read on $B.
=========
367: Fri Oct 10 13:39:27 EDT 1980
With prefix in effect, rm(list=ls("$abc*")) doesn't work...
ls does not return the list with leading "$", so rm adds the prefix to the front.
Also, if ls returns NULL, rm dies.
 ----------
Solution:  Mon Mar 30 13:55:21 EST 1981
Change $B/u/dlist.r, reload ls.
See also # 458.
=========
447: Mon Jan 12 12:xx EST 1981
len(NULL) should produce zero.
----------
Solution:  Mon Mar 30 14:24:46 EST 1981
Change $B/vecfun.i, reload len.  (also fixes mode(NULL)==0)
=========
458: Wed Jan 14 15:32:01 EST 1981
Function rm gives error message "Warning: abc not found" if
rm(abc) is typed and abc actually resides on save database, not work file.
Should enlarge message to say "not found on database pos=1"
to give the user enough info to type rm(abc,pos=2).
 ----------
Solution:  Mon Mar 30 14:25:27 EST 1981
Done.  Also changed $B/u/rm.i to allow list=NULL.
=========
306: Fri Jul 25 16:14:10 EDT 1980
coerce to matrix of an array should not silently take
the first 2 values of dim vector. Needs a warning message
at least.
----------
Solution:  Tue Mar 31 13:56:56 EST 1981
$S/coemas.r changed to fatal for dim length >2 and create
2nd dim if length <2.  Also set STYPE of created structure
to array.  Change $S/coears.r similarly, update $L/lang.
=========
347: Wed Sep 10 07:38:52 EDT 1980
When vector coerced to matrix, it gets a Dim component, but does
not get STYPE of ARRAY.
Try scale(1:10)
----------
Solution:  Tue Mar 31 13:58:13 EST 1981
Fixed #306, reload $B scale.
=========
339: Thu Sep 4 13:19:17 EDT 1980
Add some new procedures to allow communication with general spawned
processes, modelled on interaction with S functions but designed
to run other systems (e.g., GLIM) as cooperating processes:
1-mkproc to create the child proc. via loader & remember you did it
2-spause used in the created process to signal the parent (S), pause
  and then restart on signal.

Also need to move loader (& others?) to $S to make accessible to S functions.
----------
Solution:  Tue Mar 31 17:03:03 EST 1981
A partial solution to this problem (all that's likely to be done for now)
is described in the memo "S and GLIM:..." Chambers & Schilling, section 5.
To see how the S end works, look at function `glim'; to see the other
process end, look at the implementation of Sglim in directory $SHOME/glim
=========
518: Tue Mar 31 14:48:20 EST 1981
Fix  up the character height/width constants in $G/photo.r
to avoid having characters too close together.
 ----------
Solution:  Wed Apr 1 05:53:52 EST 1981
Done. Char wd,ht is 126/210.  Reload $G/dev.photo, $GRZ/../standalone photo.
=========
477: Thu Feb 12 08:21:41 EST 1981
Function atan does not work with 2 args as described in detailed doc.
 ----------
Solution:  Wed Apr 1 09:46:06 EST 1981
Create new function $B/atan.i.  Remove atan from $B/ mflkup.r mfcalc.r
$I/mathfu.m, reload $B/sin.
Also change $S/u/alias.c to remove, put on $L/lang, make new
internal executive.  Make $B/atan
=========
132: Tue Feb 19 11:43:38 EST 1980
Conflict between UNIX and GCOS re functions which agres in
first 5 characters of name (e.g., stars and starsymb).
Could make UNIX smarter so i/...c could call
a differently named routine, or abandon keeping all .i's on GCOS on library.
Solved on unix (all fns named qqmain).  Needs defn of XNAME macro in h/mach.m
for GCOS.
----------
Solution:  Wed Apr 1 10:43:52 EST 1981
We'll cross this bridge in any future portability effort.
=========
58: Nov 8
Honeywell version of edit similar to unix?  All u/ h/ pairs compatible?
----------
Solution:  Wed Apr 1 10:44:24 EST 1981
Deal with this when trying to port to new machine.
=========
238: Mon Apr 28 05:35:22 EDT 1980
There should be some way of having S kill all active processes if a BATCH
run has problems, otherwise there will be nohup, noninterruptable processes
lying around forever.
----------
Solution:  Wed Apr 1 10:46:28 EST 1981
New catchall function tries to kill processes before death.
=========
386: Wed Oct 29 10:09:31 EST 1980
It should be allowable by the parser to say x$3 to get the component
labelled "3" from dataset x.  Currently such components can only be
selected by position, x$[6] (which is confusing if "3" isn't the 3rd component.)
 ----------
Solution:  Wed Apr 1 10:52:03 EST 1981
Change $M/lang3.yr, reload executive.  Note changed to our own
yacc utility at this time (see #499).
=========
499: Wed Mar 18 10:24:43 EST 1981
For self-defense, we need to have a yacc taht produces ratfor.
Try to modify yacc to do this (may be easier if output is supposed
toto go through M4 with diverts, etc).
 ----------
Solution:  Wed Apr 1 10:53:14 EST 1981
See $SHOME/yacc directory containing our own yacc.
=========
515: Thu Mar 26 15:26:06 EST 1981
PROGRAM utility (and perhaps FUNCTION) don't work correctly
when there is only one function in the chapter and its
dependent files are redefined.  The utility uses `ed' to
get rid of the lines in the file that pertain to the old version,
and that leaves the file with nothing in it, causing error in writing.
(Note Alice's ed seems able to write 0 bytes).
 ----------
Solution:  Wed Apr 1 11:03:40 EST 1981
Change $C/CHAPTER to put a comment into the Smakefile.
This ensures thats omething is there.
=========
488: Thu Feb 26 11:34:28 EST 1981
Why does the tuning constant for rreg weight functions
match that given in the Rosepack (TOMS) paper
for all but the biweight.  Are we forgetting the .6745 factor
for the MAD?
 ----------
Solution:  Wed Apr 1 12:21:10 EST 1981
Add .6745 constant to rrscal.r ($B) and change biweight constant
from 6.2 to 4.685 as in Rosepack.  Fix documentation. 
=========
463: Wed Jan 21 12:36:29 EST 1981
printing a matrix with enormous row labels
(as long as the print line) prints the labels, but has no room
for any columns of the matrix.  Infinite loop printing the labels.
 ----------
Solution:  Thu Apr 2 13:59:56 EST 1981
Changed $S prtars.r prtmt2.r rclab.r prtvc2.r prttss.r prtvec.r
and $I/intf.m (FILTER no longer returns MISSINGs).
Reload $B/print, $IM.
FATAL for too short line.  Now prints 1-dim arrays,
uses 10 by 5 by 3 by 7 as message for arrays, takes
care of SKIPS going to OUTFC.
=========
377: Mon Oct 20 11:43:32 EDT 1980
print should ignore arguments of mode MISSING (generated by empty args).
Currently it aborts on bad data type.
Obscure but can arise in macros (e.g., ?col(mat,print)).
 ----------
Solution:  Thu Apr 2 14:06:36 EST 1981
See 463.
=========
513: Thu Mar 26 13:28:20 EST 1981
Create function to produce diagonal of hat matrix.
 ----------
Solution:  Fri Apr 3 07:02:55 EST 1981
$B/hat.i.
=========
520: Fri Apr 3 08:17:42 EST 1981
Add capability for plots of mixtures (like GRZ bplot).
 ----------
Solution:  Fri Apr 3 08:18:12 EST 1981
New macros barycentric and mixplot which compute coordinates
and produce bplot-like pictures.
=========
446: Mon Jan 12 12:xx EST 1981
Function regsum should return degrees of freedom.
----------
Solution:  Fri Apr 3 12:53:52 EST 1981
Change $B/regsum.i, reload regsum.
=========
233: Thu Apr 24 12:35:50 EST 1980
Suggested that cutree return a vector giving the heights of all
clusters that it returns.
----------
Solution:  Mon Apr 6 12:41:18 EST 1981
Change $B/cutree.i cutree.r, reload.
=========
523: Mon Apr 6 15:01:53 EST 1981
Print dies if given more row labels than actual rows of printed matrix.
 ----------
Solution:  Mon Apr 6 15:41:19 EST 1981
$S/prtmt2.r was calling rclab with nrlab as length, and it determined
the width of each label, even if unused.
Space for width was allocated length n, not nrlab.
Changed, put on $L/lang, reload print. (needs new executive)
=========
500: Wed Mar 18 10:26:11 EST 1981
Fix up hroff so that it fills lines.  No need for in-place
nroff to install documentation, and can adjust for options(width=)
to accommodate different line widths.
 ----------
Solution:  Fri Apr 10 08:18:10 EST 1981
Change $B/hroff.r help.i. New subr $B/hrfld.r (requires
new $I/read.m macros and library, see 402).
Also got rid of nroff on installation in $C/NEWDOC.
Note, need to update $B/Smakefile for hrfld.r.
=========
527: Mon Apr 13 06:53:58 EST 1981
Fix up the DEBUG macros and run-time facility since the new
read macros were installed.
 ----------
Solution:  Mon Apr 13 06:54:39 EST 1981
Fix up $S/ssnap2.r on $L/lang for new read macros.
Fix DEBUG statements in $I/intf.m and $I/stand.m so atha
DEBUG(string)  will print the string and then go into interactive
debug mode.  DEBUG(name,Mode,len) still causes printing of non-S
data structure, and DEBUG(x) still prints x if it is an interface routine structure.
=========
528: Mon Apr 13 14:58:08 EST 1981
regress prints blank lines when sink in effect.
 ----------
Solution:  Mon Apr 13 14:58:41 EST 1981
$B/regprt.i (and previous changes to $S/prtmas.r) changed to skip on OUTFC.
=========
530: Thu Apr 16 07:42:48 EST 1981
This entry lost due to crash of 4/14 - someone turned off /usr/src disk drive!
 ----------
Solution:  Thu Apr 16 07:43:29 EST 1981
Damn.
=========
493: Thu Mar 5 09:53:06 EST 1981
Problem with ability to write on the dump file.  Seems to occur
if `again' is followed by an error that causes a dump.
 ----------
Solution:  Thu Apr 16 07:44:36 EST 1981
Problem was that non-internal functions were fork/exec'ed
while source file was active, and inherited the pointers to the open
source file.  Then, even though the executive closed it, it still
couldn't be written.  Changed $M/u/devldr.c u/loader.c to close
all files in child process prior to exec.  Fix bug in $M/u/doact.r
Reloas main.
=========
422: Mon Dec 15 07:16:23 EST 1980
Problem with NULL results:  xxx_identify( ..)  with no points
identified gives STR with one NULL component with a bad name.
Use of for(i in identify(...))  gives Error: gtds: bad mode for data
if no points identified.
 ----------
Solution:  Thu Apr 16 07:46:09 EST 1981
Problem was that funev was using null outstr ptr without checking.
Changed $M/u/funev.r. Reload main.
=========
529: Mon Apr 13 15:28:56 EST 1981
search returns a strange null, with length 1, when it finds nothing.
 ----------
Solution:  Thu Apr 16 07:47:02 EST 1981
Rework so that it returns nothing (which executive interprets as NULL)
when nothing on list.
=========
538: Fri Apr 17 10:55:34 EST 1981
dput(outer(2,3,"+")) dies with ptds:bad mode for data.
Seems same as jem's bug in which a call to
sweep inside a repeat loop seems to cause everything
following it to be messed up.
 ----------
Solution:  Mon Apr 20 12:39:04 EST 1981
Changed $M/u/link.c to avoid clobbering instr -- copied to local variable.
Reload executive.  It had been changing the pointer called
fptr in steval when chaining to an internal function.  This screwed up the
next call.
=========
541: Mon Apr 20 09:18:21 EST 1981
Problem with tapply reported by cew: cells of result
with no data do not have NAs.
see $SHOME/death.
 ----------
Solution:  Tue Apr 21 09:29:46 EST 1981
What was happening was that the [1,1,...] cell of the table had no data,
and thus alink.r did not initialize procid variable to zero because
it could not detect the first call.  Changed u/alink.r u/alinkc.c ($B)
and added $I/link.m to provide for STARTUP, EXECUTE, and WRAPUP of
function to be applied.  Reload tapply, sapply and apply.
=========
537: Fri Apr 17 10:48:15 EST 1981
cew reports that sink("ttt") followed by help("glim")
responds to the executive with "+" prompt.
(Two problems, sink file closed by fix for open files during fork $M/u/loader.c
and $HELP/glim had lines with quotes that ran over line boundaries $B/hrfld.r).
 ----------
Solution:  Tue Apr 21 09:58:53 EST 1981
Changed $M/u/loader.c to leave OUTFC open on exec, reloas main.
Changed $B/hrfld.r to just look for white space as breaks, not look
for fields.  Reload help.
=========
531: Thu Apr 16 07:47:39 EST 1981
Rdpen should return NULL if no pts given, not die.
 ----------
Solution:  Tue Apr 21 10:10:20 EST 1981
Change $G/rdpen.i, reload.
=========
542: Tue Apr 21 13:16:05 EST 1981
Create utility SHOME to give pathname of S home directory.
 ----------
Solution:  Tue Apr 21 13:16:46 EST 1981
$C/SHOME.  Also fix $HELP/System to refer to it.
=========
432: Wed Dec 31 13:15:17 EST 1980
seq with length= arg seems to get confused (rounding):
compare seq(0,2,length=61) with seq(0,2,length=60)
(both of length 60)
 ----------
Solution:  Tue Apr 28 12:59:52 EDT 1981
Changed fudge factor from 10*PRECISION to 50*PRECISION in seq.i.
Also changed misuse of variable to, to t.  Reload $B/seq
=========
544: Wed Apr 29 09:45:15 EDT 1981
Problem with AXIS macro in $I/graphics.m.
 ----------
Solution:  Wed Apr 29 09:45:53 EDT 1981
Unbalanced parens fixed.
=========
545: Thu Apr 30 10:22:08 EDT 1981
Foneil reports that !S BATCH ... executed from a macro doesn't work,
gives Error: failed message.
 ----------
Solution:  Thu Apr 30 10:23:01 EDT 1981
Changed $SHOME/pwb/dup2.c to close target fd before trying
to dup.  This will close down the stack file from the initial version
of S, and allow the batch version to re-open.  Ok on Alice.
Recompile onto $L/psl, reload main for 3.0 versions.
=========
548: Mon May 4 09:05:38 EDT 1981
Still problems with sink:  the sequence sink("ttt"); sink(); sink("ttt")
gives Cannot attach ttt message.
 ----------
Solution:  Mon May 4 09:22:16 EDT 1981
In $M/u/doact.r, processes were being killed only after new sink file was
attached, and not if sink file was being detached.  The sink() cmd was still
around and had inherited the open fd for "ttt", thus blocking the second open.
Killem now unconditionally done for SINK_ACTION.  Reload main.
=========
551: Thu May 7 10:28:53 EDT 1981
faces doesn't treat its nrow & ncol parameters correctly:
when they are given, it uses 1 fig. per frame.
Also, the specification of which generates an error
message, even when the values are in bounds.
 ----------
Solution:  Thu May 7 10:30:37 EDT 1981
Fix faces.i faces.r, and ammend the $I/graphics.m macros
to recognize mfrow and mfcol as parameters in SPECIFY.
faces.i needs to pass down the number of user-supplied
values in which. faces.r should treat 0 specified values
as default & otherwise use as many values as given by user
setting the reset to 0.

the nrow problem was because mfset was called anyway, whether
the user specified the nfrow or not.
=========
106: Mon Feb 4 12:58:55 EST 1980
The reg (and rreg) function should be able to take a matrix of Y variables and
produce a matrix of coefficients and residuals.
----------
Solution:  Tue May 12 11:17:09 EDT 1981
Done for reg, rreg is grubby enough that it seems pointless
to do the iteration over columns inside, rather than in a for loop.
Allan changed $B/reg.i regsum.i regprt.i, $P/gslsi.r gslsiw.r regsum.r regcov.r
and $B/rrwtls.r.  Also fix up documentation, install reg, regprt, regsum, rreg.
=========
383: Thu Oct 23 11:30:34 EDT 1980
Weighted regression with zero weights gives NAs in residuals;
NAs are not allowed in resid by regprt.  Thus regress(x,y,wt)
dies if wt contains zeroes.
Should the residuals be computed by coefs and data?
 ----------
Solution:  Tue May 12 11:19:16 EDT 1981
Solution to 106 also solves this.  $P/glsliw.r keeps pointers to original
data to compute residuals for zero weight data.
=========
506: Thu Mar 19 15:06:47 EST 1981
regress with non-trivial weights gives the wrong anova table & covar. if q=T:
 regress(x,y,wt=..) #ok
 regprt(reg(x,y,wt=..,q=T) #ok
 regress(x,y,wt=..,q=T) #wrong
Presumably some side-effect of the special chaining code in reg.i ??
 ----------
Solution:  Wed May 13 16:43:36 EDT 1981
Problem: when returning the entire outstr as a single value,
reg.i assumed (incorrectly) that LENGTH(outstr) was up to date.
In fact zzrtrn didn't track nres with LENGTH(outstr). Thus any results beyond
those that were recorded by LENGTH(outstr) were ignored.
change $S/zzrtrn.r, reload on $L/lang, reload reg.
=========
555: Thu May 14 12:25:50 EDT 1981
Fix up the logging code to allow lines terminated with just a period.
 ----------
Solution:  Thu May 14 12:27:04 EDT 1981
Create $SHOME/s/util/logcat.c as a utility.  Usin in LOG and SOLVE.
=========
540: Fri Apr 17 13:34:11 EST 1981
Problem with glim:  when trying to update a model,
glim(fit="-v1") gets error cp: cannot create glim.ot
(potentially from the open stmt in dump.r or setup.f).
Also, glim source file should be in one place, not $SHOME/glim and $B for glim.i.
 ----------
Solution:  Thu May 14 13:27:59 EDT 1981
This disappeared a while ago, on reloading.
(Needed reloading on this date because $SHOME changed (used in glim.i))
Glim source partly systematized onto $B, but have to keep the non-S
source separate.
=========
156: Fri Feb 29 17:47:25 EST 1980
Various bugs in multivariate plotting:
pairs should take parameters (pch, etc) (Done 3/18/81)
stars (& others?) get confused when they fill up 1 page
with plots & think they should go on to next page,
even tho they dont then plot anything.

Should be a clean way to specify exactly no. of rows & columns
for plots. Currently only faces allows this & it is messy - dont
want both max and nrow,ncol.

Should be either a symbolic face (like starsymb) and/or some way
to control the range of the parameters for the face.

smatrix should allow row & column labels, lay out col. labels
on several lines. (Done, but see 462)
Also, could use options length to control page length, name argument
`spread' space="   " as in encode.
----------
Solution:  Thu May 14 15:31:59 EDT 1981
Problem with widow headings fixd in stars.r
Specification of nrow and/or ncol added to stars & fixed in faces.
Not really reasonable for pairs.
Also fixed bug in $G/runhd.r (didn't CLEAR, no heading should be plotted if head="").
A symbolic face doesn't really make sense: how could you label the characters.

Forget about space= in smatrix. Not really useful.

Fix faces.r, stars.i stars.r runhd.r setmf.r.
Reload faces, pairs, and stars.
=========
552: Thu May 7 10:33:34 EDT 1981
It should be possible for users of stars to specify the
nrow & ncol, similar to facility allowed by faces.
 ----------
Solution:  Thu May 14 15:35:43 EDT 1981
See solution to 156.
=========
554: Thu May 14 11:51:17 EDT 1981
Problem with faces:
If nrow specified, setmf not called, causing byrow arg not to work
and causing margins, etc to be zapped by rsetmf at the end.
 ----------
Solution:  Thu May 14 15:36:01 EDT 1981
See solution to 156.
=========
481: Tue Feb 24 09:02:20 EST 1981
Macro processor should allow a simple character vector as a macro
This would simplify on-the-fly macros, and eliminate need for ?define(...).
 ----------
Solution:  Mon May 18 09:12:09 EDT 1981
Fix in putdef.r.  Done in conjunction with 553,556.
=========
553: Tue May 12 11:21:10 EDT 1981
The character ?, when not followed by a macro name (e.g., "?,",
comes out with the following char moved in front
(",?"). Possibly a bug in the macro processor.
 ----------
Solution:  Mon May 18 09:17:45 EDT 1981
Bug in $MAC/macro.r:  when stand-alone "?" encountered, needs to re-scan
the following character for its special effects.  Previous
code had just accepted the next character.   See also 556.
=========
556: Fri May 15 06:31:39 EDT 1981
Problem with macros calling other macros:
Both may use same temporary name for scratch, e.g., $Tx.
Possible solution, use ?T(x) instead of $Tx and have ?T
generate a unique name in the macro processor.
 ----------
Solution:  Mon May 18 09:19:41 EDT 1981
Done.  Changes to $I/macro.m $I/cmacro, $MAC/macro.r putdef.r eval.r smacro.r
and new $MAC/dotmp.r.  Recompile , put on $L/macro, reload $B/macro.
Also, should change all system macros to make use of new capability
and advertize it to users.
=========
565: Thu May 28 05:35:20 EDT 1981
Executive gets into loop after stmts x<-1; x[F]
(which should return NULL).
Also, x[NULL] returns 1, not NULL.
 ----------
Solution:  Thu May 28 09:41:30 EDT 1981
Changed $B/subset.i to set LENGTH(P(x))=0 as well as setting MODE(P(x))
to NULL.  Somewhere in the executive while copying, the previous length
of 1 suggested that the value of the null entry needed copying,
causing an error in pcopy, followed by loop in jstkrl.
The x[NULL] thing is a feature, I guess.  NULL is treated
like a MISSING in a subscript, x[NULL,3] gets the entire third column,
just like x[,3].
Necessary to reload internal main.
=========
564: Wed May 27 15:24:30 EDT 1981
Create device driver for unix plot(5) devices.
 ----------
Solution:  Thu May 28 10:29:14 EDT 1981
New driver function unixplot.  $G/u/unxdev.o, dev.unixplot.
=========
566: Thu May 28 10:47:26 EDT 1981
The text option of pairs doesn't take NAs into account.
 ----------
Solution:  Thu May 28 11:00:50 EDT 1981
Modify $G/ptext.r to skip to next iteration of loop
if NA present in x or y coords.
=========
573: Thu Jun 11 10:04:28 EDT 1981
Ranktest macro missing right paren.
 ----------
Solution:  Thu Jun 11 10:05:16 EDT 1981
Fixed.
=========
558: Fri May 15 18:22:47 EDT 1981
To make apply function as (potentially) an internal function, it is
necessary to reconcile alink and the standard link function.  The best
way to do this is probably to fix alink to call link directly. No problem
then if in main, since we can use any function (internal or external)
just the same as if they were called directly (?). But need to arrange
for some dummy things (e.g., infun) if the same source for apply
is to work when apply is external.
 ----------
Solution:  Fri Jun 12 11:22:55 EDT 1981
Multiple changes make link work inside apply.  First, apply library
constructed in $B, consisting of u/alink.r and link,loader,wtinstr
from $M, along with a dummy version of infun, doact, inact in $B/u/infun.r.
apply.i sapply.i tapply.i jackknife.i changed to call alink with
WRAPUP on any fatal errors.  Rid of $B/u/alinkc.c.  Changed $M/u/wtinstr.c
to use getpid() rather than mainpid when writing second word of stack file.
=========
476: Wed Feb 11 10:57:26 EST 1981
Install optimization routines & add to interface language
 ----------
Solution:  Fri Jun 12 14:07:12 EDT 1981
$P/opt.r, $B functions optinit optiter and associated files.
Change $I/intf.m.  System macro fmin, fmin2.
=========
402: Wed Nov 12 11:09:46 EST 1980
Various improvements in read (DECODE) and print(ENCODE):
1-Factility to UNGET field.
2-Ability to read a string & get back a pointer to it (neither C, S or V
 formats do this)
3-General orientation to getting characters a la  UNIX rather than the 
  FORTRAN line-oriented input. More important for getting tokens (strfld)
  in the parser than in reading).
4-Resolution of the incompatibilities and overlaps among a)data input
  (inputd); b)parsing (*tok, strfld); c) DECODE
 ----------
Solution:  Mon Jun 15 11:45:53 EDT 1981
Many changes-- $I/read.m; $P/dec*.r; $P/*fld.r; $M/u/yylex.r; $M/lexlin.r, maybe more.
=========
577: Wed Jun 17 11:05:24 EDT 1981
The outer function is broken.  It seems taht previous change to zzrtrn
has zapped the INSERT capability of intf.m.
 ----------
Solution:  Wed Jun 17 12:24:50 EDT 1981
Change $I/intf.m to simply pcopy in an inserted entry that has a name
identical to an existing entry.
=========
578: Wed Jun 17 13:13:23 EDT 1981
dget with the new read routines does not eliminate escape chars.
This causes dump & restore not to work, e.g., for macros.
 ----------
Solution:  Wed Jun 17 13:18:20 EDT 1981
The problem was with decsp0.o decs00.r, which used strfld, which in turn
did not delete the escape char. during the read.
Solution is to make the dec... routines consistent with the lexical
input, by calling strfld.  Arrange that decs00 calls decsp0; this means
that some useless stack storage is generated, but relieves inessential
limits on the length of input strings.
Side effect is that strfld should now not be used by anything.
Remake the psl lib (new order--decs00,decsp0,strtok) & reload dget.
=========
579: Wed Jun 17 13:27:49 EDT 1981
For systems like Berkeley that do not flush stdio buffers
rewrite device driver support code to call system write, not printf.
 ----------
Solution:  Wed Jun 17 13:30:44 EDT 1981
Change Change stuff in $GRZ/../*/u/*.c to get rid of printf.
=========
581: Fri Jun 19 07:50:48 EDT 1981
Problem with previous tar tapes -- no blocking because of
lack of /dev/rmt? in tar cmd.  Fix it.
 ----------
Solution:  Fri Jun 19 07:51:45 EDT 1981
Now export/SBOOT and $C/TARTAPE do the right thing for blocking,
using -f option for tar to use /dev/rmt?.
=========
586: Wed Jun 24 07:54:56 EDT 1981
Create new function clorder to help re-order cluster
plots so that an exogenous variable can provide control
over the decisions of left-to-right order of leaves.
 ----------
Solution:  Wed Jun 24 07:55:58 EDT 1981
$B/clorder.i, documentation.
=========
4: Fri Jan 11 15:07:51 EST 1980
In tek12, 14, and 46, u/zquxyz.c uses ioctl with CBREAK to turn off erase, kill chars
that might be received from the terminal.
CBREAK isn't defined with PWB systems.
----------
Solution:  Wed Jun 24 08:47:43 EDT 1981
New OpSys macro and shell variable allows conditional code.
Used in lots of u/*.c files for GRZ support.
=========
587: Wed Jun 24 08:48:24 EDT 1981
Add support for tektronix option 31 pen changing capabilities.
 ----------
Solution:  Wed Jun 24 08:49:02 EDT 1981
Change $GRZ/../tek46source tk46cl.r, zwrapz.r to change pens, put away.
Reload $G/dev.tek46.  Modify $G/tek46.i to coerce color arg to INT, not LGL.
Change documentation.  Reload $G tek46.
=========
590: Thu Jul 2 14:12:14 EDT 1981
Fix up macros for generating code on machines that have no
character variables in their fortran.  Specifically, the
CLEAR command in print.m needs to conditionally use cfill
rather than a character assignment.
 ----------
Solution:  Thu Jul 2 14:13:41 EDT 1981
Modify $I/print.m to conditionally use macro CHAR_VAR, defined
in $I/stand.m to test if the CHARACTER declaration generates
a character statement.  
=========
589: Thu Jul 2 14:04:59 EDT 1981
dget doesn't seem to be able to read NAs.
Try xx_c(1,NA,3.5); dput(xx,file="tt"); dget("tt")
 ----------
Solution:  Tue Jul 7 09:06:57 EDT 1981
Fix $P/decnum.r to check for NA returned from deci20, and
to ensure that decnum then sets its real returned value to NA.
Put on $L/psl, reload $B/dget, restore.
=========
591: Mon Jul 6 16:44:44 EDT 1981
Fix up hardcopy function to work on aed512.
(Change $G/hdcopy.i, $I/device.m, $GRZ/../aedsource/zparmz.r,
reload dev.aed512, hardcopy)
 ----------
Solution:  Tue Jul 7 09:08:37 EDT 1981
Also, modify $C/AED to set up button 6 for hardcopy, and
create 6502 program at 1350 to actually activate the unit.
=========
592: Tue Jul 7 16:07:18 EDT 1981
$P/svd.r doesn't release the stack space that it allocates for scratch.
 ----------
Solution:  Wed Jul 8 07:11:01 EDT 1981
Add jstkrl(1), recompile, put on $L/psl.  Reload $B/svd.
=========
562: Tue May 26 11:38:16 EDT 1981
Apparent bug in lowess generated by Dan Flamm.  See datasets
in swork -- lowess(dlf.x,dlf.y,f=.2).  Other values of f work OK.
 ----------
Solution:  Wed Jul 8 07:39:21 EDT 1981
Problem was division by near-zero when all non-zero weight
points were coincident.  WSC changed numerical properties of
algorithm, and it seems to work better.  Change $P/lowest.r,
put on $L/psl, reload $B/lowess.
=========
598: Thu Jul 16 12:59:19 EDT 1981
The builtin limit on equivalences in f77 can easily be exceeded by having ~20
structures in an interface routine.
 ----------
Solution:  Thu Jul 16 13:00:25 EDT 1981
There is a -Nqxxx option to f77 to set max no. of equivalences.
The default generated by MAKE is now xxx=500.
Changed $C/makehead
=========
600: Tue Jul 21 22:07:03 EDT 1981
smatrix dies if default labels are used with a large number of rows.
 ----------
Solution:  Wed Jul 22 06:47:19 EDT 1981
Change $G/smatrix.r to use variable nc in for loop dealing with columns
(it had used nr).  Reload smatrix.
=========
583: Fri Jun 19 16:52:11 EDT 1981
the tar in SBOOT to extract tar.c has args in wrong order
 ----------
Solution:  Wed Jul 22 07:18:05 EDT 1981
Changed. (Before 4.0 and Berkeley Tapes)
=========
Wed Jul 22 07:18:05 EDT 1981
*****   Changes to this point reflected in 4.0 and Berkeley Tapes ****
=========
603: Fri Jul 24 07:59:22 EDT 1981
EBF claims hcp is substantial part of the run time of one of his programs.
Investigate trivial steps to speed it up.
 ----------
Solution:  Mon Jul 27 07:38:04 EDT 1981
Modified $P/hcp.r.  Speedup seems less than 10% at best, and was
negative at worst.  Oh well ...
=========
604: Fri Jul 31 15:02:25 EDT 1981
sxinit.r does not declare variable ptr as POINTER.  Weird bug resulted
from integer/float conversion on Tom Hamilton's machine which aborted
the bootstrap process when the machine developed problems with its
floating point accelerator.  Up to that point, all was ok.
 ----------
Solution:  Fri Jul 31 15:08:51 EDT 1981
Fixed.
=========
608: Tue Aug 11 16:17:40 EDT 1981
to reproduce a typical coerce problem, try ;
coerce(c("300","341","394","585.5","453","33")
+ ,REAL)
This comes up when you real in a matrix of data which
contains a column of point labels that are characters.
Read makes all columns of the data character variables
and when you use coerce to get real values, the reults
are funny if each number doesn't contain a decimal point.
mhb5c!mary
 ----------
Solution:  Wed Aug 12 07:30:28 EDT 1981
Change $B/coerce.i to use GETSTRING (which copies EOS into buffer and
prevents longer previous number from affecting current one).
Reload.
=========
605: Fri Jul 31 16:20:41 EDT 1981
The revised decode routines never got into the token processor
for expressions nor into the read routine. As a result, real numbers
with too many digits after the decimal are incorrect, either read in
or as constants.
 ----------
Solution:  Thu Aug 13 16:03:24 EDT 1981
In $P, revise decnum.r decv00.r decr00.r numtok.r
In $I, revise read.m to change the NUMTOK macro
In $B revise read.i and inputd.r
Remake read and the main.
(At the same time, these changes fix some more obscure bugs relative
to reading.  It turns out that the code using decnum would have failed
to read character strings correctly if the default mode was
used in the read function.)
Remake the psl library as well (before read and the main.)
=========
613: Mon Aug 17 15:14:43 EDT 1981
Fix up tek46 plotter code to plot unslashed zeros.
 ----------
Solution:  Mon Aug 17 15:15:33 EDT 1981
Simple kludge turns zero into Oh in zptchz.r.  Reload dev.tek46.
=========
615: Mon Aug 31 08:56:33 EDT 1981
outer(diag(2),diag(3))
dies on "cannot coerce multiway array to matrix" inside outer.
 ----------
Solution:  Mon Aug 31 10:10:55 EDT 1981
This was the result of a new addition to coemas to print the message interacting
with a lack of precision in outer.i.  Coerce tried to change the Dim
component of a matrix by using INSERT.  However, you cannot change the
Dim to have more than 2 values and still have a matrix!  This wasn't checked
previously, and so everything used to work.  I changed the code to make
the result an ARRAY, not MATRIX, so the error doesn't occur.
Change outer.i, reload.
=========
616: Mon Aug 31 17:13:45 EDT 1981
Problem with graphic input on Unix 4.0 -- terminal hangs on
4014 and hp72.  Extra characters make it go on.  Problem
on hermes, circe, and venus, but not mars!
 ----------
Solution:  Mon Aug 31 17:15:59 EDT 1981
Fix up the $GRZ/../???source/u/zquxyz.c and zoutrz.c
code to set up the VMIN field of the tty structure
since with ICANON in effect, it was looking for characters
in multiples of 4 prior to returning from system calls.
Reload lots of device drivers.
=========
618: Tue Sep 15 10:45:04 EDT 1981
Function sample dies after recompilation.  Sample(10,100) dies, (10,100,T) works.
 ----------
Solution:  Tue Sep 15 11:47:13 EDT 1981
Fencepost problem in $B/tsamp.r -- used 0 <= i <= size rather than 0 <= i < size.
Reload sample.
=========
621: Thu Sep 17 06:40:54 EDT 1981
cstr with more than 12 args dies by getting enormous amounts of space.
Also, split dies in a similar way.  May be return of too many results?
Problem is in $S/zzrtrn.r -- variable "l" should be "lact".  This causes
the size of the outstr to be doubled with every new arg added to a result!
 ----------
Solution:  Thu Sep 17 08:05:29 EDT 1981
Fix $S/zzrtrn.r, put .o onto $L/lang, reload split, cstr.  Few other
functions produce so many results, so mild inefficiencies should be tolerable.
=========
622: Tue Sep 22 18:29:24 EDT 1981
The macro FIND must be a SPECIAL in icomp for the nonlinear fitting
procedures described in the Chambers/Wilks memo (81-11214-34) to work.
 ----------
Solution:  Wed Sep 23 08:51:21 EDT 1981
Replace "format" as a special in main.c and lex.l ($SHOME/s/icomp) by FIND.
Noone should be using "format" anyway; it was a relic from the days before
the ENCODE macros were written.
(Requires make-ing, not MAKE-ing, icomp in $SHOME/s/icomp.)
=========
470: Mon Jan 26 12:00:07 EST 1981
Fix up HP7225 code to reduce sleep (while waiting on buffer space)
to about 10 sec.  Also, lty=2,5 should be dotted, have more white space.
 ----------
Solution:  Tue Oct 6 07:58:52 EDT 1981
Change zparmz, zseekz, u/zoutrz.c to fix this.  The change to
zparmz forces configuration initialization, since the 7225 we got
seems to power-up in a mode that prints all of the received chars.
Reload $G/dev.hpgl.
=========
633: Wed Oct 7 15:04:13 EDT 1981
Modify aed512 code to eliminate slashed zero.
 ----------
Solution:  Wed Oct 7 15:05:34 EDT 1981
Change zptchz to turn zero into oh.  Reload dev.aed512.
=========
634: Thu Oct 8 12:42:25 EDT 1981
hist gets into infinite loop for all-negative data.
Try hist(-1,plot=F)
 ----------
Solution:  Thu Oct 8 14:51:44 EDT 1981
Change $GRZ/hhbrkz.r: it used to take the maximum value*1.001
in order to increase it if a point actually fell at the max value.
If the max value was zero or negative, this caused infinite loop
looking for interval.  Compile onto $L/grz.  Reload $G/hist.
=========
635: Fri Oct 9 08:22:06 EDT 1981
Reload all old functions on Alice to make sure that all are separate
a.out files (more efficient, paged loading, sharable according to ark).
 ----------
Solution:  Fri Oct 9 11:37:30 EDT 1981
Done.
=========
638: Wed Oct 21 06:53:21 EDT 1981
Tim Orrok (mhuxh!gto) reports a problem with cut that reduces to
cut(seq(33),seq(5))  dies with cannot get enough memory (chpgt).
It works on alice (until reloaded, then dies).
 ----------
Solution:  Wed Oct 21 07:07:54 EDT 1981
Problem was an off-by-one loop in creating the default labels
for the intervals when breaks were given.
Change $B/cut.i, reload.
=========
588: Thu Jun 25 08:27:53 EDT 1981
cew has occasionally experienced problems with apply and the applied
process (len or mean) both going to sleep for extended periods.
Have re-loaded mean and len to attempt to solve the problem (perhaps
old version of cinter.m?) and will watch for further symptoms.
Seems to occur most often under light system load.
 ----------
Solution:  Thu Oct 22 07:02:32 EDT 1981
Changed $M/u/link.c and reloaded $B applylib, apply, tapply, sapply.
Problem seemed to be that in link, the code tested "have I gotten a
sigterm yet" before going into a wait to wait for the link'ed process
to signal.  Previously,  we had not checked for the process returning
so quickly that the signal may have arrived before the wait.  This bug
seemed caused by a signal that caught us after testing for a previously
arrived signal, but before entering the wait.  Ark suggested a way of
using longjmp to circumvent the problem.
=========
642: Tue Nov 3 11:11:33 EST 1981
Create new lottery3 dataset.
 ----------
Solution:  Tue Nov 3 11:12:08 EST 1981
Done.
=========
643: Fri Nov 6 14:36:21 EST 1981
ARW reports amax0 in $P/opt.r should be amax1.
 ----------
Solution:  Fri Nov 6 14:37:09 EST 1981
Presumably f77 knew better.
=========
646: Wed Nov 11 10:29:20 EST 1981
Create quickvu function for ease in making vugraphs.
 ----------
Solution:  Wed Nov 11 10:30:35 EST 1981
$G/quickvu.i vuread.r.
=========
650: Thu Nov 19 07:36:12 EST 1981
Add support for FR80 in comic mode (photographs turned sideways,
wider than tall).
 ----------
Solution:  Thu Nov 19 07:36:54 EST 1981
New device driver `comic'.  Added to BPLOT and documentation.
$G/comic.r, dev.comic, comic. $C/BPLOT.
=========
606: Wed Aug 5 07:58:31 EDT 1981
ark suggests that pure executable stuff in $X be reloaded to produce
separate executable files for faster loading. (Use file to determine,
pure stuff originally came from 3.0 version).
 ----------
Solution:  Thu Nov 19 07:50:00 EST 1981
Done a couple of weeks ago.  All works reasonably now.
=========
651: Fri Nov 20 07:00:49 EST 1981
Fix up $C/PROGRAM to allow -lport, etc as part of the command line.
Already works correctly in FUNCTION.
 ----------
Solution:  Fri Nov 20 07:11:27 EST 1981
Added logic from $C/FUNCTION to $C/PROGRAM.
=========
623: Wed Sep 30 08:33:51 EDT 1981
Provide device driver for hp2648 (and 2623?) displays
Already done by Bill Shugard.
(Affects $GRZ/../hp2648 *.r u/*.c, $I/device.m hp2648.m,
$G/Smakefile, $HELP/hp2648)
 ----------
Solution:  Sun Nov 22 20:55:39 EST 1981
Also $GRZ/../standalone/hp2648.r, change to Smakefile for standalone driver.
hp2647 same as 2648.
=========
596: Sat Jul 11 09:50:35 EDT 1981
Add vector font capability for vu-graphs, etc.
 ----------
Solution:  Sun Nov 22 21:12:47 EST 1981
$G/ vu.i vudraw.r vusymb.r vusetz.r vutext.r legnfz.r fdraw.r ptfont.r
flengz.r fdeltz.r gtfont.r fspwid.r u/sgets.c i/vu.c
$HELP/vu.
Special sgets.c more efficient for reading character stuff than
the standard one.
=========
652: Sun Nov 22 21:19:48 EST 1981
Add new graphical devices to $C/GRZSYSGEN -- otherwise SYSGEN will fail.
 ----------
Solution:  Tue Nov 24 07:53:35 EST 1981
Added hp2648 and tek4110.
=========
654: Wed Nov 25 14:31:48 EST 1981
Axis(side=1,at=5) does not generate ticks, but it does if label= is given.
 ----------
Solution:  Wed Nov 25 14:32:45 EST 1981
Problm in $G/axis.i -- negate "which" flag if no ticks.  reload
=========
655: Tue Dec 8 09:25:24 EST 1981
Arrange a shell parameter EDITOR= or such to tell which editor
should be invoked when `edit' function is used.
 ----------
Solution:  Tue Dec 8 13:15:22 EST 1981
Shell variable EDITOR looked at by new shell script $C/editor.
Changed $B/medit.i u/edit.i to invoke S editor.
=========
656: Mon Dec 14 09:50:06 EST 1981
Allen reports problem with replot -- abnormal termination.
 ----------
Solution:  Mon Dec 14 09:51:07 EST 1981
Recompile $GRZ/replot.r, put on $L/grz, reload replot function.
=========
To: rab

This is an amusing entry from Hermes GRIPE files:

106: SUBJECT: swork/sdata
    USER: dhp1 EXT: 7498 Wed Dec  9 08:29:07 EST 1981  (63 words)
SYSTEM: = mhuxh mhuxh 4.0 1103 vax-780
I was at command level just after printing a file and suddenly
the system typed:
One time initialization for new S user...
Directories swork and sdata created

These directories were indeed created in the current directory ($HOME/src).
My question is what happened.
The program I used to print out the file (hcopy2.c) is currently underdevelop-
ment but seems to be working correctly.
					dhp
----------
Solved by S. B. Goldsmith (mh 7746)    Mon Dec 14 00:43:59 EST 1981

    Under normal conditions, when an hp terminal is instructed to go
into print mode under program control, it sends a capital 'S' to the
computer it is connected to.  Coincidentally, S is the name of a
very popular  statistical analysis package which initializes the two
directories swork and sdata.  If you can find the right control
sequences that will put the terminal in print mode without its
sending the 'S', your problem will be solved.
=========
660: Tue Dec 22 11:32:31 EST 1981
Problem: User at WB wanted to use WB prism.  By running with BPLOT_REMOTE=wb
the output never appeared.
 ----------
Solution:  Tue Dec 22 11:33:54 EST 1981
Problem was that grafpac looks at users bin for where to route prism,
finds bin number, and doesn't know about wb's new prism.
This requires reload of sport/prism on gcos (after WH graphics people
put knowledge of wb prism into grafpac).  Alternative is for user
to use PRISM_REMOTE=wb to force GR>WB: into usl command, presumably
overriding grafpac's remote stuff.
It doesn't seem reasonable to have to reload every time a new prism is installed!!
=========
145: Tue Feb 26 14:42:34 EST 1980
Get ramtek, tek25 code.
----------
Solution:  Mon Jan 4 08:06:25 EST 1982
Borrowed Ramtek 6211 from Tom Redman/Duane Roberts/Blan Godfrey
gave opportunity to develop code in $GRZ/../ramtek.
Also $C/RAM6211, changes to $G/Smakefile for ram6211, dev.ram6211.
$HELP/ram6211, $G/flood.r.
=========
657: Thu Dec 17 07:10:38 EST 1981
Tom Marinis (mhuxh!marinis) reports problem with axis length on prism:
a plot with par(pin=c(4,3)) gives 4 and 3 inch axes on stare, but only
3.9 by 3" on prism with bplot.
 ----------
Solution:  Mon Jan 4 09:22:15 EST 1982
Problem was that on prism, the x axis is analog and thus cannot be controlled
exactly (sweep of galvanometer) although the y axis is synchronized pretty
well (it must be in order to have 3 passes deposit colors exactly on top of
each pixel).  Y axis is most often out of whack at mid page (by a fraction
of a pixel).  Note problem is reversed on stare, since y is controlled by
friction feed paper movement, while x axis is fixed set of write heads.
=========
449: Mon Jan 12 12:xx EST 1981
usa should have option to plot square or something to fill
for AK, HI.
----------
Solution:  Thu Jan 7 07:35:10 EST 1982
Add optional arg fifty= to usa to cause boxes for AK, HI.
$GRZ/usabdy.r $G/usa.i $HELP/usa,flood state.center on sys db.
=========
662: Fri Jan 8 09:03:24 EST 1982
Doc for atan(x,y) is confusing since tangent conventionally y/x but atan
uses arg1/arg2.  Could fix by renaming args.
 ----------
Solution:  Fri Jan 8 09:20:33 EST 1982
Change $B/atan.i to name args a,b, also $HELP/atan.
Fix bug where atan(NA) was 0, not NA.
=========
620: Wed Sep 16 10:43:11 EDT 1981
If the device driver dies (and it seems to have a fair probability
of dying due to interrupts during plotting), S will get pipe errors when
trying to do any graphics stuff, and will not even be able to quit,
since there will be a pipe error when the executive tries to shut down
the device driver. (These are sigpipes caused by write on pipe with no readers)
 ----------
Solution:  Wed Jan 13 07:40:58 EST 1982
Change $M/u/devkil.c to ignore sigpipes when trying to wrap up device, and
make $S/u/kill.c warn (rather than terminate) if it couldn't kill a process.
Reload main.
=========
659: Tue Dec 22 06:44:46 EST 1981
>From mhuxm!mhuxh!dafa Wed Dec  9 16:16:59 1981
From: David Fay (ihnss!dafa)
Subject: GETFUNCTION

When GETFUNCTION gets no function name as an argument or gets something
it doesn't recognize, it gives messages like:

                cat: cannot open /tmp/ttt29952

and proceeds to create copy.argument and make.argument files in
user/uucp. It then dumps out a list of all the S functions, promising to ship
every last one of them to the remote system. Can GETFUNCTION be made
more forgiving?
 ----------
Solution:  Mon Jan 18 09:13:26 EST 1982
Problem was that S GETFUNCTION acts as though there is one arg, even though
GETFUNCTION alone recognized that there was no arg.  Clean up arg checking
somewhat, remove make.junk file if junk not found. Fixed $C/GETFUNCTION
=========
568: Tue Jun 9 12:34:07 EDT 1981
Fix up hp72 code for new 8-pen version.
 ----------
Solution:  Mon Jan 18 10:38:46 EST 1982
Done a while ago.  Changed 4 to 8 in color changing code.
=========
561: Fri May 22 11:39:53 EDT 1981
Problem with pairs: for 4-column x, pairs(x,max=2)
screws up on second and third pages.
 ----------
Solution:  Mon Jan 18 12:29:03 EST 1982
Revise $G/pairs.r, reload pairs.
=========
390: Sat Nov 1 08:20:33 EST 1980
Create code to support aed512 color scope.
(See $GRZ/../aedsource, $C/AED HARDWIRE, $I/aed512.m)
Also $GRZ/../standalone aed512.
 ----------
Solution:  Tue Jan 19 07:39:17 EST 1982
This has been complete for some time now.
=========
426: Fri Dec 19 06:49:16 EST 1980
Arrange for tape generation procedure to create a file giving the machine name
and date in a standard place.  Then we can know what version
sites get by having them cat the file (e.g., $C/place.time).
 ----------
Solution:  Tue Jan 19 07:45:58 EST 1982
$C/ TARTAPE, CPIOTAPE, SOURCETAPE now create file VERSION that contains
date/time of generation, as well as shell variable OpSys.
=========
522: Mon Apr 6 11:09:01 EST 1981
$B/u/newblt.r should look for "Data" component, not "data"
 ----------
Solution:  Tue Jan 19 14:36:28 EST 1982
Done.  Reload $B/newblt.  This allows
for(i in cstr(a=1,Data=2))print(i) to work.
=========
567: Mon Jun 1 14:19:58 EDT 1981
Modify the high-level graphics functions so that
type="b" draws lines that miss the points.   Also augment
lines function to allow arg miss=size, so lines miss
the coordinates by a specified amount.
 ----------
Solution:  Tue Jan 19 14:40:41 EST 1982
Change $G/typlot.r to allow type="b" and "o". "b" uses dlinez, "o" uses linesz.
Reload $G/graphlib, plot matplot pairs stars starsymb tslines
=========
428: Mon Dec 22 14:46:51 EST 1980
Problem with stem: if both quartiles are the same, argument
fence cannot extend the fences beyond the quartiles.
 ----------
Solution:  Thu Jan 21 12:41:10 EST 1982
Change $P/stems.r to use hinges of remainder of data for finding high,low pts.
reload $B/stem
=========
661: Tue Jan 5 13:10:08 EST 1982
Ramtek flood code should reset color to 1 before exit.
Actually, problem is that Ramtek driver doesn't think that any other process
will change color, size, etc, so it doesn't reset them at zflshz.
 ----------
Solution:  Thu Jan 21 13:03:29 EST 1982
Wait for new release of ramtek firmware so that the entire thing can be
cleaned up.
=========
532: Thu Apr 16 07:47:54 EST 1981
medit should re-edit the sedit file if given no args.  This would
allow fixing up a macro that had been rejected by define
which was chained to by prior medit.
 ----------
Solution:  Thu Jan 21 15:39:37 EST 1982
Change $B/medit.i, $HELP/medit, reload.
=========
366: Fri Oct 10 13:37:37 EDT 1980
Read gets into trouble with numbers containing many significant digits,
e.g., .9876543210987, whenever it cannot represent the decimal part as
an integer.  No error messages, etc.
 ----------
Solution:  Tue Jan 26 11:15:05 EST 1982
JMC fixed this a while ago
=========
288: Thu Jun 26 13:18:59 EDT 1980
On tektronix terminals, graphic input has the ability to generate
characters # and @.
These are the default UNIX character and line kill chars.
This can mess up input, causing premature end of input in rdpen or identify.
----------
Solution:  Tue Jan 26 11:16:58 EST 1982
Fixed in device drivers by using cbreak mode or setting icanon flag
in zquxyz.c.
=========
319: Tue Aug 19 15:05:23 EDT 1980
On sam45, aos machines, basic2 test contained the line
reg(xmat[,c(1:4,1)],yvec)
that gave reg a singular x matrix.
On sam45, died. On aos, worked, but gave Structure of type -1072874563
when c(1:4,1) replaced by c(1,2,1,3,4).
Death on sam45 was in gtblku, jstkgt, ientry, wtouts (trying to create
a str entry).
Also, note that when c(1,2,1,3,4) was given, reg thought that rank was <=2,
ignoring cols 3 and 4 that followed the duplicate.
----------
Solution:  Tue Jan 26 11:18:04 EST 1982
Only relevant to pdp-11's, and there are no 11's to experiment on.
Not really solved.
=========
217: Fri Apr 11 08:00:55 EST 1980
Input buffer  in parser and read should be much larger.  Currently is 126,
but extract utility for example, allows 2000.
Source files and macros can easily generate more than 126.
Actually had user abort with an S input file generated by a program
(invoked macro with about 140 characters of args).
----------
Solution:  Tue Jan 26 11:19:58 EST 1982
Parse buffer much larger with JMC changes to read macros (around 500 chars per line).
=========
570: Wed Jun 10 05:59:41 EDT 1981
Macro problem: macro expansion eats up the final new-line
in its definition, so that ?z+?q would end up on one line,
for example.  However it also happens here
?DEFINE(x,1)
y<-?x
"next line"
The newline after ?x is eaten, causing it to be concatenated
to the next line.  Note there is no newline in the defn of x.
 ----------
Solution:  Tue Jan 26 11:24:44 EST 1982
This is the same thing as 480.
It is NOT solved.
=========
667: Tue Jan 26 11:36:26 EST 1982
Problems with regress:  regprt.i doesn't return sqrtw if it got it from
arg structure.
D Pregibon claims summary stats not computed correctly if wts used.
 ----------
Solution:  Tue Jan 26 12:29:37 EST 1982
Change regprt.i to return sqrtw (coerced to vec if possible)
and change call to regsum to pass res, not resid.  (res had sqrtw factored in)
regsum.i did it correctly.
Reload regprt
=========
630: Tue Oct 6 08:13:53 EDT 1981
Wil Walkoe (IH) reports that r2 outputs from regress and leaps
do not match in the weighted case, but do in unweighted.
 ----------
Solution:  Tue Jan 26 12:31:28 EST 1982
See 667.
=========
624: Wed Sep 30 08:54:00 EDT 1981
Provide support for Tektronix 4110 series terminals,
especially 4112.
 ----------
Solution:  Thu Jan 28 10:54:08 EST 1982
$GRZ/../tek4110 contains source.  Make $G/tek4112 dev.tek4112
$C/TEK4112 to initialize buttons.  $HELP/tek4112
=========
670: Mon Feb 1 10:38:45 EST 1982
Fix up SYSGEN to print date/time on entry and have a trap to
print date/time on exit, too.
 ----------
Solution:  Mon Feb 1 10:58:05 EST 1982
Done.
=========
671: Tue Feb 2 07:53:45 EST 1982
Problem with plot1: needs routine strnum.
 ----------
Solution:  Tue Feb 2 07:54:09 EST 1982
Revive strnum.r and strint.r, add to end of plot1.r
as local routines.  At present, didn't seem worth messing
with rewriting plot1 to use DECODE stuff.
=========
672: Wed Feb 3 08:07:57 EST 1982
David Fay reports problem with GETFUNCTION coerce -- trys to ship all
files in $B
 ----------
Solution:  Wed Feb 3 08:08:51 EST 1982
Problem was that Smakefile lines without "#" caused error in edit script which
caused list of files to be empty.  Then ls `cat /tmp/ttt$$` would give
full ls of $B.  Checked for "#" with global in editor, and exit if
/tmp/ttt$$ is empty.
=========
674: Wed Feb 3 16:37:16 EST 1982
New installation on rabbit has end-of-file reached in help after .AG line.
 ----------
Solution:  Wed Feb 3 16:38:03 EST 1982
Change $B/hroff.r to set NO_CHECK=FALSE after GETLINE, thus
enabling checks for EOF in hroff and hrfld.  Reload $B/help
Also, change $I/read.m to use AUTO_CHECK rather than NO_CHECK (more
mnemonic, since it means code should/should not automatically check eof)
=========
676: Fri Feb 5 14:57:49 EST 1982
help prints a line ".IP" with nothing else on it.
 ----------
Solution:  Fri Feb 5 15:01:56 EST 1982
$B/hroff.r didn't check for short line.  Reload help.
=========
675: Fri Feb 5 06:39:55 EST 1982
On rabbit, filenames with >14 chars are rejected by open, creat system
calls.  Change $P/u/cio.c to truncate requested names prior to system calls.
 ----------
Solution:  Fri Feb 5 15:02:33 EST 1982
Not really - change $S/u/statck.c and getpth.r to truncate the final portion
of the file name.  Reload get assign save dump mprint restore.
Put statck getpth on $L/lang
=========
669: Wed Jan 27 08:06:42 EST 1982
Why not have MAKE use /tmp /tmp/i and /tmp/u for compilations.
Would remove the need for any of S's directories to be writable,
and would also put the temp files in the "correct" place.
 ----------
Solution:  Mon Feb 8 13:58:07 EST 1982
Change $C/MAKE VMAKE makehead. Also makehead now has RM as a macro, so that
MAKE RM= abc.o will compile abc and leave files lying around in /tmp.
=========
677: Mon Feb 8 07:12:42 EST 1982
Problem with extract utility.  Produces incorrect entries in .ext file like
( "name" ) length --- where the ")" should be R or I (the mode).
(On Berkeley, toupper() from <ctype.h> only works with lower case input, not
with arbitrary input.  Chars R or I from users' .des files were getting
turned into junk.)
 ----------
Solution:  Mon Feb 8 14:15:42 EST 1982
Modify $SHOME/s/util/extract.c and $P/u/lower.c u/upper.c to check islower/isupper before
using tolower/toupper.  Reload extract utility.
=========
411: Tue Nov 25 12:52:19 EST 1980
An IP in documentation without an argument gets printed by hroff.
For example, $HELP/System.
 ----------
Solution:  Mon Feb 8 14:26:49 EST 1982
Fixed.  See 676.
=========
673: Wed Feb 3 13:54:44 EST 1982
Bug: non-interactive execution often ends up with
Warning: < kill > Couldnt kill process 116404
with large process id. Try DOTEST basic2
 ----------
Solution:  Wed Feb 10 15:32:47 EST 1982
Change $M/u/link.c (again) to set flag=F prior to setting up catcher
for SIGINTs.  Problem was that catcher got invoked very quickly
(from the point of view of the executive), and flag was set to previous
values from prior calls to link!  Could cause longjump botches,
unknown process ids, mysterious dumped messages.
=========
680: Wed Feb 10 14:05:57 EST 1982
On rabbit, tests die with arbitrary "Dumped" messages,
kill unable to signal processes with bad process ids, etc.
 ----------
Solution:  Wed Feb 10 15:34:46 EST 1982
See 673.
=========
595: Fri Jul 10 12:31:33 EDT 1981
Add speed arg to hp72 driver to control pen speed.
 ----------
Solution:  Thu Feb 11 08:48:23 EST 1982
Also added to tek46.  Change $GRZ/../hp72source/zparmz.r to set speed,
$G/hp72.i to have speed arg, reload $G/dev.hp72, hp72.
Also $GRZ/../tek46source zparmz.r zwrapz.r to control speed and pen changing
for option 31 multi-pen.  $G/dev.tek46 $G/tek46.  Change $G/tek46.i for speed arg. 
Also changed $HELP/tek46 hp72.
=========
313: Tue Aug 5 11:52:56 EDT 1980
Since abline is smart enough to recognize a regression structure, it should
also check for an `int' component. If there is one & its value isFALSE,
`abline' should produce the correct line through the origin.
----------
Solution:  Fri Feb 12 07:04:20 EST 1982
Easier just to check if length(coef)==1, then line through origin.
Change $G/abline.i, reload.
=========
683: Mon Feb 22 10:00:41 EST 1982
Interface routine with lots of structures overflowed the limit on number
of names in f77.
 ----------
Solution:  Mon Feb 22 10:01:52 EST 1982
Change $C/makehead to add -Nn801 to f77 line for .i.x make.
=========
684: Mon Feb 22 12:27:50 EST 1982
Debug facility gets unexpected eof on input from terminal.
Try any interface routine with DEBUG statement.
 ----------
Solution:  Mon Feb 22 14:30:05 EST 1982
$S/ssnap2.r didn't set AUTO_CHECK=F after GETLINE.
Recompile, put on $L/lang.
=========
685: Mon Mar 1 10:16:20 EST 1982
glim broken
 ----------
Solution:  Mon Mar 1 10:17:10 EST 1982
recompile $B/glim.i whenever SHOME is changed, since it uses the macro HOME!
Also needed to change $SHOME/glim/Ssource/pausec.r to use
AUTO_CHECK=FALSE, so that it could tell if the procid file was absent.
Reload Sglim.
=========
681: Wed Feb 10 16:07:52 EST 1982
Make user-callable (from C/F77) routines to create S data sets.
Allow creation of vectors, arrays, time-series.
 ----------
Solution:  Tue Mar 2 08:00:24 EST 1982
$S/u/ cvectr.r cvwrite.c, documented in $GUIDE/cvwrite.d.
Put on $L/lang.
=========
686: Tue Mar 2 13:22:03 EST 1982
Fix apply so that it retains the appropriate labels of table structures.
 ----------
Solution:  Tue Mar 2 13:23:01 EST 1982
Change $B/apply.i to keep appropriate Label structure components
if Label was present in first arg.  Reload.  It keeps Label
even in 1-dimensional case.
=========
687: Tue Mar 2 14:21:58 EST 1982
Fix sweep so that it will work with tables.  Typically summary stats
when formed into an array do not match the structure of the original
table (there is no Label component), and thus the arithmetic operations
die because of mis-matched args.
 ----------
Solution:  Tue Mar 2 14:25:08 EST 1982
Change $B/sweep.i so that created array is LIKE(a) but without data,
so that it will be happy in the sweeping function.
Reload $B/sweep.
=========
648: Wed Nov 11 11:19:29 EST 1981
Have tbl pick a single format for each column (numeric)
it is processing, otherwise column with .15, .24, .10, etc
will end up with .15, .24, .1 ...
Use $S/dtafmt.r as done in $S/prtmt2.r
 ----------
Solution:  Wed Mar 3 09:08:49 EST 1982
Change $B/tbldat.r to use dtafmt.  Reload tbl.
=========
519: Wed Apr 1 13:00:53 EST 1981
tprint has a problem printing tables with only one
dimension, e.g., tprint(code(1:5)).  Gets floating exception.
Also, print dies with array of dimension 1 (gives fatal msg).
Mail resolution to mhuxm!krantz.
Also, add arg to tprint to require the same format for all numeric
tables, thus forcing decimal points to line up.
 ----------
Solution:  Wed Mar 3 09:38:50 EST 1982
Change $B/tprint.i to change 1-dim table into 2-dim table for printing.
Didn't do the decimal line-up stuff.  Reload $B/tprint
=========
690: Fri Mar 5 09:41:00 EST 1982
Fix up $P/u/letter.c digit.c so that they have second argument
for the length of the char string passed by f77.
 ----------
Solution:  Fri Mar 5 09:41:55 EST 1982
done
=========
691: Thu Mar 11 14:55:28 EST 1982
Create a version of read & dget (hence restore) that use the stdio
routines, so that reading large amounts of data is not so slow.
 ----------
Solution:  Thu Mar 11 14:56:35 EST 1982
New routines inputs.r replacing inputd.r and strget.r replacing dget.r
on $B use $P/u/uread.c to do equivalent input. (also charfld.r, ptrfld.r
and rderr.r on $P).  These support new read, dget & restore.  Old
versions kept as pread, pdget, prestore.   Installed ~3/1/82.
Bug fixed 3/11/82 to make ^d work as end of file on stdin.
=========
599: Thu Jul 16 15:46:41 EDT 1981
svd(matrix(c(1,-1,-1,1),2,2)) dies with fp exception.
 ----------
Solution:  Fri Mar 12 10:02:52 EST 1982
Modified svd.r from Linda Kaufman via EBF fixes the problem wiht
singular or very near singular matrices.
=========
594: Wed Jul 8 14:22:47 EDT 1981
Line 132 (test on abs(s(l-1))<=eps  after comment test for split) in $P/svd.r
apparently can look at s(0) when l==1.  EBF has evidence of it happening
on Cray.
 ----------
Solution:  Fri Mar 12 10:04:12 EST 1982
Fixed code from Linda Kaufman and EBF.  Change $P/svd.r.  Put on $L/psl.
Reload $B/ svd prcomp discr cancor.
=========
693: Thu Mar 25 07:46:07 EST 1982
Create scandata utility to aid in input of large fixed-format data files.
 ----------
Solution:  Thu Mar 25 07:47:05 EST 1982
$SHOME/s/util/scandata.c, $HELP/scandata.
=========
694: Thu Mar 25 12:33:02 EST 1982
Make the glim function able to function without explicit knowledge of
the S home directory by using the mknam function.
 ----------
Solution:  Thu Mar 25 13:55:03 EST 1982
Create $S/u/mksnam.c which looks in the environment for the SHOME variable and
concatenates slocal/Sglim to it.  Change $B/glim.i to call it.
This is similar to the mknam code used in setting up the S chapters
in the sys.boot, and perhaps should replace that code -- it seems
cleaner to do it this way than to look at the name S was invoked by.
=========
611: Fri Aug 14 13:34:58 EDT 1981
Try mean(1,trim=.5) -- produces 16777218!
or mean(1,trim=0) which produces 2.
(New executive reads .5 as .4999999... (difference -2.9e-8 from 1/2)
and then trmean does not recognize it in test "if(trim==.5)...".
Trmean has a bug for n=1 in the case of trim<.5.)
 ----------
Solution:  Fri Mar 26 07:58:22 EST 1982
Change $P/trmean.r to look for special case of trimming leaving only
one non-trimmed value.  Reload $B/mean, twoway, cor.
=========
695: Fri Mar 26 10:17:24 EST 1982
Make it possible to move S around without recompiling anything
to facilitate tracking from other machines and general file system reorganizations.
 ----------
Solution:  Fri Mar 26 10:37:53 EST 1982
Changes to $I/u/cinter.m, $I/u/mach.m $I/u/files.m to get rid of HOME macro,
calls to strip and mknam, external shome variable.
Revise $M/u/main.c to remove call to strip, $M/u/loader.c to use getenv
to find SHOME, $B/sxinit to use mksnam rather than mknam.
Get rid of $S/u/strip.c $S/u/mknam.c.  Reload main, $B/sys.boot.
Also changed $C/SETUP.S to remove references to HOME variable, $C/makehead
to invoke m4 with -DSHOME=$SHOME flag.
=========
696: Fri Apr 2 07:08:31 EST 1982
Get rid of ld: -i ignored message generated during function loading.
 ----------
Solution:  Fri Apr 2 07:09:00 EST 1982
Change $C/makehead $C/FUNCTION $C/PROGRAM to use make macro LDFLAGS
rather than explicit "-i".  In generall LDFLAGS is null, although it
may be set to -i for pdp-11 versions later.
Also change $B/Smakefile, $G/Smakefile, $M/Smakefile to use it.
=========
698: Fri Apr 2 09:57:58 EST 1982
Bug in read:  when reading long integer file, it gets messed up, returning the
wrong values.  If len= is given, the correct result is returned. Seems to be
problem on re-allocating when data grows beyond initial 2000 values.
 ----------
Solution:  Fri Apr 2 09:59:21 EST 1982
Change $B/inputs.r to set correct mode of data prior to copying when data area
needed to be expanded.
Also same change to inputd.r -- reload read, pread.
=========
689: Thu Mar 4 07:45:28 EST 1982
Bug in qgamma.  qgamma(.01226226,.05) gives error about quantile <0
qgamma(.01276276,.05) gives 1e38 as value.  Also seems to be present
for second parameter from .04 to .08.
Note original source CACM 1973, Vol 16 p483-5, was for chi-square,
perhaps not accurate for <.5 df.
 ----------
Solution:  Mon Apr 5 11:25:37 EST 1982
Fix courtesy of mhuxm!whuxlb!thf -- change $P/qgamm.r to avoid underflow
in computing these quantiles.  Put on $L/psl, reload $B/qgamma.

From mhuxm!whuxlb!thf Sat Apr  3 11:04:58 1982*
i worked on qgamm.r some and here are my conclusions:
for eta < .5 there will always be an interval (0,p sub 0]
(p sub 0 depending on eta) such that for each p
in (0, p sub 0] the quantile q1
is positive but less than the machine epsilon (smallest
positive number representable in floating point)
one the vax, machine eps is 2^-128 or about 2.938736e-39
i don't know what philosophy S follows in these cases:
should qgamm.r return 0 or machine eps?
for the specific example p = .01226226 eta = .05
one eventually has del1 = -3.13e-39 , q1 = 5.93 e -39
so that the test 
if( -del1 > q1) ( in the repeat statement)
yields false and no change is made to del1
subsequently, the statement
q1 = q1 + del1
tries to set q1 to 2.77 e -39 which is less than the 
machine eps, so sets to 0.
i therefor added a check right after this statement
if(q1 <= 0)
	q1 = mcheps
to keep q1 positive
there is a subsequent check:
if( d1 < q1*1.0e-6)
	break 1
that attempts to quit the loop when del1 is not changing much
it was failing because q1 was so small (about e-39) already
that q1*e-6 was 0 and the strict inequality could not
be satisfied. i therefore changed this to
if( d1 <= q1*1.0e-6)
	break 1
with these two changes the routine will return
machine eps for eta <1 and very small values of p.
at the end of this mail, i enclose the revised routine.
if you decide that the routine should return 0 instead
of machine eps, i think changing q1 = mcheps
to break 1 should work.
sorry, i forgot: i also increased the number of iterations
from 25 to 50 because in some cases the routine did
not make it to macheps in 25 iterations.
=========
700: Thu Apr 8 08:12:11 EST 1982
Create ability to "profile" the S executive by getting a list of the
functions that were executed during a session.
 ----------
Solution:  Thu Apr 8 08:12:51 EST 1982
Change $M/u/link.c to open file S.profile.  If file exists and is writable,
then a list of all functions used is appended to the file.
Also $C/SUMMARY to summarize the functions listed in S.profile
=========
701: Fri Apr 9 07:12:04 EST 1982
Get rid of slashed zeros on hp2623s.
 ----------
Solution:  Fri Apr 9 07:12:28 EST 1982
Change $GRZ/../hp2648/zptchz.r to turn 0 into O.  Reload $G/dev.hp2648
=========
628: Mon Oct 5 08:57:04 EDT 1981
Write an hp7225v device driver, where the zseekz, etc, end up interchanging
x and y coords to provide a rotated plot.
 ----------
Solution:  Thu Apr 15 12:38:28 EST 1982
Modified $GRZ/../hpglsource Smakefile and created yseekz.r yparmz.r ylinez.r yptchz.r
and u/yquxyz.c with interchanged axes.  Also $G/hpglv.i i/hpglv.c, change $G/Smakefile
and MAKE hpglv dev.hpglv.  Modify $HELP/hpgl documentation.
=========
702: Fri Apr 16 14:36:18 EST 1982
Fixes to glim from allen mcintosh.
 ----------
Solution:  Fri Apr 16 14:36:48 EST 1982
Change $B/glim.i glim2.i glstdr.r.  Reload glim, glim2.  Change $HELP/glim.
=========
535: Thu Apr 16 07:51:41 EST 1981
Allow option hardcopy=T to replot for tek14 replotting.
 ----------
Solution:  Fri Apr 16 15:05:22 EST 1982
Modify tek device drivers so that ask=-1 produces auto hardcopy just prior
to clearing screen.  This way the user can have auto hardcopy on anything.
$GRZ/../tek14source/zejecz.r, etc.
=========
706: Mon May 10 11:18:03 EDT 1982
The edit function should allow a pos= arg for editing things on the
save database, etc.
 ----------
Solution:  Mon May 10 12:00:58 EDT 1982
Change $B/u/edit.i.
=========
711: Mon May 24 09:43:10 EDT 1982
Fix up the text function to allow varying character sizes and colors
for the different labels.
 ----------
Solution:  Mon May 24 09:43:53 EDT 1982
Change $G/text.i and $HELP/text.
=========
715: Fri May 28 13:54:35 EDT 1982
S PROGRAM abc def.r ghi.r
generates spurrious newlines in Smakefile.
 ----------
Solution:  Fri May 28 13:55:22 EDT 1982
Modify $C/PROGRAM to use `echo $comp` rather than $comp in substitutions.
The layer of ``s get rid of the newlines.
=========
714: Thu May 27 15:34:56 EDT 1982
Problem with defer(ask=T) -- it gives
"Save last frame?" message and then dies when the user responds yes.
Message: decoded string too long for buffer
 $P/decs00.r read next string, errored when too long for 1 char field
 in $GRZ/../indsource/defer.r
User gives carriage return, gets unexpected EOF message.
 GETLINE gets line length 0 from return, then begfld tries to get next
 field and gets eof since decodes are from the getLINE, not a file
 ----------
Solution:  Sat May 29 08:45:27 EDT 1982
Change $P/decs00.r to allow for EOF checking outside and not to FATAL if the
returned string is too long for a fixed-length field.
in $GRZ/../indsource, change defer.r to set AUTO_CHECK=F, remake defer, devfltr
Reload lots of device drivers in $G to get new code in
tek10,12,14,14q,4112,aed512,hp2648
=========
717: Tue Jun 1 10:17:58 EDT 1982
Create algorithm to determine if graphics code can be used
(check for pipes to device driver).  Useful for programs that
want to do things conditionally on having graphics active.
 ----------
Solution:  Tue Jun 1 14:15:07 EDT 1982
$GRZ/u/isgraf.c does the check of pipe existence.  Called as if(isgraf(0)) ...
Put on $L/grz.
=========
415: Thu Dec 4 07:20:09 EST 1980
Create function stamp() to put a time/date(plot number) stamp
on graphical output and also to enter it into diary file.
Can this be automatic from frame to frame?  Automatically on
if diary is on?  Solutions to this could allow running titles, etc.
Also, have function to print data on the diray file\
diaryprint(data) so we can record interesting points in an analysis.
 ----------
Solution:  Tue Jun 1 14:16:24 EDT 1982
Stamp function written.  $G/stamp.i.
Required new executive and changes to $M/u/doact.r to write on
diary file.
=========
682: Fri Feb 12 07:05:45 EST 1982
Fix up aed512 stuff to work with V91 proms.
($G/u/fillbx add flush for Berkeley, reload focus, refine)
 ----------
Solution:  Thu Jun 3 08:27:03 EDT 1982
Changed several things in $GRZ/../aedsource and aedutil (I forget which, foo!)
reloaded device drivers, scan, focus, etc.
=========
647: Wed Nov 11 11:17:55 EST 1981
Use of err=1 graphical parameter causes device driver
to commit suicide on an error -- it really screws stuff up!
(Now that drivers can die without messing up the exec, this needs fixing only
for cosmetic reasons)
 ----------
Solution:  Thu Jun 3 08:28:08 EDT 1982
Because of comment above, not worth worrying about.
=========
653: Tue Nov 24 10:02:45 EST 1981
It would be interesting to try to interface pic to create an S function
or to interface to standalone graphics drivers.
Could be done 2 ways -- pic input produces graphical output, or a new
device driver called pic that would produce an ascii output file suitable
for input to pic/troff for graphics inside memos.
 ----------
Solution:  Thu Jun 3 08:29:04 EDT 1982
New pic device driver in $G, $GRZ/../pic/*.  This provides pic commands
in file pic.out which can be inserted into troffed documents.
The converse seems to require a gr-z troff post-processor, and is
not worth the time at present.
=========
619: Tue Sep 15 11:13:44 EDT 1981
hist(x) where x contains all NAs dies requesting too much core.
(or ptds: bad write).
 ----------
Solution:  Thu Jun 3 08:42:02 EDT 1982
Test for LENGTH(x)==0 after the NAOUT statement in $G/hist.i
=========
585: Tue Jun 23 16:46:42 EDT 1981
It would be nice to have a mechanism to make Bell System datasets available
to users. We cannot put them on the shared database unless they are public
domain, since they would then get copied to the distribution tape for outside
use. Some possibilities: have a special prefix onthe sys. database that
gets deleted when the tapes are made; 2) have another database; 3)install
the datasets only on MHCC machines (these at the moment cannot be the source
for non-Bell versions).
The first candidate dataset follows:

>From sport Wed Jun 17 16:24:20 1981 remote from mhuxm
There is a (3,16,198) array on mhuxm!/m1/c4364/54364ls/sdata/zdat
that claims to represent impedance values for curcuits
based on the 1977 loop survey. Data comes from Linda
Seltzer (mh x6838), who has been asked to provide some
data documentation. Otherwise, the structure of the data
is not known.
Data is probably Bell System private & therefore not
suitable to go on the tapes, but apparently is widely
used & a mess to get at from other computer files.
Might be nice to have somewhere accessible.
>From mhuxm!54364ls Tue Jun 23 15:42:05 1981
John - Documentation for the dataset zdat is in zdat.d in
my directory (54364ls).
Please let me know if you make it available on any systems.
				L. Seltzer

 ----------
Solution:  Thu Jun 3 08:42:45 EDT 1982
Proprietary datasets are probably more problem than they are worth.
Decision not to have any  (besides, in the time since this entry,
noone has asked about the dataset mentioned there).
=========
572: Wed Jun 10 11:06:24 EDT 1981
cew wants ability to give vector values col, pch, etc to plot functions
in order to allow categorical variables to be encoded.
 ----------
Solution:  Thu Jun 3 08:45:55 EDT 1982
See 711 -- added col and cex args to text function.
=========
569: Tue Jun 9 12:34:49 EDT 1981
Infinite loop results from batch run with file not terminated by
explicit quit function.  EOF generates Syntax error message.
 ----------
Solution:  Thu Jun 3 08:46:24 EDT 1982
Fixed some time ago.
=========
597: Sat Jul 11 09:50:49 EDT 1981
Does current vu function need changes for all of the EOF
checking involved following GETSTRING?
 ----------
Solution:  Thu Jun 3 08:48:25 EDT 1982
Should be ok following the changes to put fonts into vu.
=========
525: Wed Apr 8 15:23:21 EST 1981
hist and barplot need capability to have ylim arg
to control axis.  Possibly have axes produced by axes
rather than internally (see 204).
Also allow xlim for hist, to restrict the visible part of histo.
 ----------
Solution:  Thu Jun 3 08:49:58 EDT 1982
Many changes to hist and barplot to provide colored areas, xlim/ylim,
better control over width args, etc.  Done by JMS.
Changed code in $G: dev.hp2648, barplot.i legend.[ir] barset.r bardrw.r
axes.i hist.i  $P/repf.r  $GRZ: bhtchz.r solbar.r bnamez.r zpolyz.r
Reloaded device drivers for aed512, hp2623 for area filling stuff.
$GRZ/zpolyz.r, polyz.r $I/u/driver.m, $GRZ/../indsource/ ind.c defer.r
(MAKE inddev devfltr defer)  $G/device $G/polyfill.i $GRZ/repltz.r
=========
517: Tue Mar 31 13:58:30 EST 1981
Treatment of space= arg with beside=T in barplot is inconsistent
with documentation.  If space=.2 given, result is different from
default, yet default is .2.
Also, space seems to be taken from the bars near the space,
resulting in varying width bars in the above situation.
Try barplot(m,beside=T,space=1) for matrix m.
 ----------
Solution:  Thu Jun 3 08:54:15 EDT 1982
See 525.
=========
460: Fri Jan 16 11:46:11 EST 1981
rdpen should have an optional arg `draw=' that would
join successive points by lines as they are read.
(Useful with polyfill)
 ----------
Solution:  Thu Jun 3 08:55:10 EDT 1982
Added type= arg some time ago.
=========
204: Thu Apr 3 06:24:24 EST 1980
Could save some space if `axes' were able to draw only one axis.
Then functions barplot and bxp could let axes have the axis drawing code to
plot their single y-axis, and the axis could also come out following the plot.
Also, these functions should honor axes=F.
----------
Solution:  Thu Jun 3 08:56:12 EDT 1982
See 525.
=========
224: Fri Apr 18 15:29:32 EST 1980
If square plot with extra margin room (beyond that represented by
mar)  does title know that labels should be allowed outside of
the margin limits?
----------
Solution:  Thu Jun 3 08:56:40 EDT 1982
Better to be strict about it since replots on devices with different
aspect ratios should work.
=========
225: Mon Apr 21 10:38:56 EST 1980
How should one go about doing an identify on the outliers of a boxplot?
----------
Solution:  Thu Jun 3 08:58:44 EDT 1982
Barplot and eventually boxplot will return vector of bar centers.
Given this, the x,y coords of outliers can be determined to use identify.
=========
721: Thu Jun 17 12:38:49 EDT 1982
If an old Proc.Sglim that is empty is lying around
(may get there if glim cannot exec Sglim), then any invocation of glimn
dies because of the EOF in reading Proc.Sglim.
 ----------
Solution:  Thu Jun 17 12:51:56 EDT 1982
Change $S/u/procfd.r to check EOF after each number
read from the Proc.Sglim file.  Reload $B/glim
=========
722: Thu Jun 17 13:36:59 EDT 1982
Install code for sabl.
 ----------
Solution:  Thu Jun 17 13:37:36 EDT 1982
$B/sabl.i sabl.r ewrt.r and $B/sablsource/* contain the code.
D Art did the work.  sablsource contains an sed script that modifies
structed versions of the original fortran sabl stuff.
=========
710: Mon May 24 07:27:14 EDT 1982
Paul had problems with the following (shortened) code -- it seems
to produce powers of two in nn0 rather than a simple sequence of integers:

nn0<-1
nna<-nn0; nn0<-nn0+1
nnb<-nn0; nn0<-nn0+1
nnc<-nn0; nn0<-nn0+1
...

When typed in directly, each line after the second prompts as a continuation
line.
Also a problem is
x_9; x_15
which dies on a syntax error on second assignment.  Perhaps it is a problem
with parsing an integer as the last thing on a line.
 ----------
Solution:  Fri Jun 18 11:22:33 EDT 1982
Problem was that decnum needs something to terminate a number, presumably
the EOS character.  Sxpars, when encountering more than one stmt per line,
processes the first and then shifts the second into the first position
of the line.  However, it did not move the EOS along with the second stmt.
That meant that the end of the second stmt got concatenated with garbage from
the first one.

Modified $P/spctok.r $M/u/yylex.r $M/sxpars.r reload main.
Results:  Fix bug, cause "+" prompt for seond line of macros,
fix bug in paren balance if more than MAXPAR depth reached, allow
if(...) to appear in stmt with macros (see 707).
=========
707: Fri May 14 17:27:59 EDT 1982
Macro problems:
f(?abc)
responds with a "+" prompt, apparently because of paren balance
problems.
if(?abc)1 
is even worse, since an extra ")" cures the first one but causes
unbalenced paren messages on the second example.
Probably a case of the parser neglecting to forget paren balance info
once it has sent the line to the macro processor.
 ----------
Solution:  Fri Jun 18 11:27:28 EDT 1982
See 710.
=========
692: Mon Mar 22 12:39:38 EST 1982
The expressions
nr_1
nc_1
nrc_nr*nc; xx_1
(typed exactly as shown here)
generate a syntax error on the third line.
 ----------
Solution:  Fri Jun 18 11:28:15 EDT 1982
See 710.
=========
450: Mon Jan 12 12:xx EST 1981
Boxplot should have the same coordinate system as
barplot.  Doc should be fixed to say so.
----------
Solution:  Fri Jun 18 11:38:56 EDT 1982
Both functions will return NOPRINT the vector of box/bar centers.
=========
639: Wed Oct 21 16:53:22 EDT 1981
Read gets into trouble with file of character stuff if the first thing
starts with "e"--either thinks it is numeric 0e3 in the case of "e3", or
a bad character in numeric field for "ex".
Notify mhb5c!elena.
 ----------
Solution:  Fri Jun 18 11:40:55 EDT 1982
Fixed by the new C read code.
=========
580: Wed Jun 17 15:03:48 EDT 1981
When executed with echo turned on, the lines
1;2+
3
are echoed as
1;2+
    1
2+
    5
 ----------
Solution:  Fri Jun 18 14:43:37 EDT 1982
See 710
=========
612: Mon Aug 17 09:17:13 EDT 1981
The parser dies on
mean(runif(10)); mean(runif(10),trim=.5
)  # continuation line
and thinks there is a syntax error in the second expr.
Also, it does not print the offending expression, but prints
a bunch of spaces pointed to by an arrow. The dumped expr is ok.
 ----------
Solution:  Fri Jun 18 14:59:17 EDT 1982
See 710.
=========
716: Mon May 31 11:36:56 EDT 1982
Create utility so that user can type
S HELP function ...
to get S documentation from outside of S.
 ----------
Solution:  Fri Jun 18 15:01:08 EDT 1982
$C/HELP
=========
719: Wed Jun 2 09:30:13 EDT 1982
To get BPLOT to make multiple prism copies, just insert
diff 1
28 #
into the Sgraph file after the first "par" stuff.  This sets am(28) which is the
copy counter.
 ----------
Solution:  Thu Jun 24 14:13:22 EDT 1982
Change $C/BPLOT.
=========
703: Thu May 6 22:10:59 EDT 1982
If a is a matrix,
dput(mstr(a,x=1,y=2))
creates a structure with Data component 2, x component 1 and an unnamed
component which is a matrix a.
 ----------
Solution:  Mon Jul 5 07:59:29 EDT 1982
Change $B/mstr.i to take structure argument with name "weird" rather
than the common "x".  What had happened was that the x=1 was
taken as the structure to be modified, since x was the structure
argument name.
=========
726: Thu Jul 15 08:31:16 EDT 1982
Fix up subset to handle the label component of tables.
 ----------
Solution:  Thu Jul 15 08:31:55 EDT 1982
Ted Wright (cew) provided code to handle the situation.  New code
$B/subset.i, $B/labmod.r.  Reload subset, the executive.
The code is careful to return vectors for singly subscripted tables
and to preserve the Label component of categories.
=========
727: Thu Jul 15 08:44:01 EDT 1982
Fix up pie chart code to fill segments of pie, etc.
 ----------
Solution:  Thu Jul 15 08:44:42 EDT 1982
Judy Schilling (jms) provided new code.  $G/pie.i $GRZ/piez.r, gnarcz.r
(generate coords for arc).  Put on $L/grz, reload $G/pie, new $HELP/pie.
=========
728: Fri Jul 16 07:57:43 EDT 1982
matplot(x,y,pch=".") doesn't draw the second set of points if
y is a matrix with 2 columns.  Reported by Sharon Kinsel, mhuxv!slk.
 ----------
Solution:  Fri Jul 16 08:29:37 EDT 1982
Change $GRZ/zpntsz.r to set lty(1) for drawing plotting dots.  
Put on $L/grz, reload $G/dev.hp72.
=========
730: Wed Jul 21 11:56:50 EDT 1982
the full2dist macro erroneously used xxx instead of xx and
Nrow instead of nrow.
 ----------
Solution:  Wed Jul 21 11:58:07 EDT 1982
Fixed.
=========
733: Thu Aug 5 09:04:27 EDT 1982
Modify the executive to get rid of the Stemp.????? file (the stack file).
Unlink it in $M/u/npinit.c, so it is invisible
(it won't go away because there is still an open file descriptor) and
1) users won't get confused by seeing it lying around
2) $M/u/doact.r will no longer need to execute the system command
   rm Stemp.*
3) If more than one S session is done in the same directory, the first
   one to finish currently removes all of the Stemp* files, and later
   finishers get the message "Stemp.* not found" when they quit.
   This will no longer happen.
 ----------
Solution:  Fri Aug 6 09:53:03 EDT 1982
Done.
=========
738: Thu Aug 12 07:26:24 EDT 1982
$S/u/mksnam.c used SHOME in the code, intending that it be a literal.
However, SHOME was defined for m4 to know where to look for INCLUDE files.
 ----------
Solution:  Thu Aug 12 07:31:45 EDT 1982
Use undefine(`SHOME') in this part of the code to ensure a literal.
Would affect sys.boot and glim.  Put new version on $L/lang.
=========
739: Thu Aug 12 07:58:05 EDT 1982
PLOTARGS in $I/intf.m behaves differently than other argument-getting
macros (ARG & KEYARG) in that it does not default to NAFATAL.
Instead, it uses COERCE without any NA flag, and thus gets NAOK.
 ----------
Solution:  Thu Aug 12 08:01:21 EDT 1982
Modify $I/intf.m to change
COERCE(x,REAL,$1)  to
COERCE(x,REAL,ifelse($1,,NAFATAL,$1))
This will ensure fatals for NAs on input unless user uses PLOTARGS(NAOK).
=========
737: Wed Aug 11 15:01:50 EDT 1982
symbols doesn't die if NAs are included in the x and y args
symbols(c(1,NA),1:2,circle=1:2)
draws two circles.
 ----------
Solution:  Thu Aug 12 08:29:52 EDT 1982
See fix to 739.  Reloaded $G/ approx flood hatch legend polyfill and symbols.
=========
741: Tue Aug 24 20:26:35 EDT 1982
Bug in $I/u/files.m (designed for inclusion in C programs, specifically
$M/u/main.c).  It has the wrong length for the filcds common block
and on systems that require consistency, gives incorrect results.
 ----------
Solution:  Tue Aug 24 20:28:12 EDT 1982
Changed from MAXFC+1 to 2*MAXFC+2
=========
742: Wed Aug 25 10:31:13 EDT 1982
Change aed color utility so that it doesn't have multiple definitions
of externals (from color.h).  Necessary for running on Unix 5.0.
 ----------
Solution:  Wed Aug 25 10:36:24 EDT 1982
Change $GRZ/../aedutil/color.h to produce either external statements
or definitions of externals based on whether NOEXTERN has been defined.
Define NOEXTERN in main.c so that it owns the externals.
=========
744: Thu Aug 26 21:09:01 EDT 1982
$GRZ/../indsource/defer.r calls setprm with string and its length --
actually, $P/u/setprm.c doesn't have a length argument.
 ----------
Solution:  Thu Aug 26 21:10:48 EDT 1982
Changed to TSTRING to ensure an EOS.
=========
745: Fri Aug 27 17:48:21 EDT 1982
Made device driver for blit terminal.
 ----------
Solution:  Fri Aug 27 17:49:14 EDT 1982
$GRZ/../blit, $G/blit.i $HELP/blit.
Creates device driver $C/Sterm, executable $C/blit.
=========
748: Wed Sep 1 13:03:58 EDT 1982
Modify $C/DOTEST to provide means of running all tests.
 ----------
Solution:  Wed Sep 1 14:26:26 EDT 1982
Done.
=========
751: Thu Sep 2 10:49:46 EDT 1982
Allow hp7221 as device name.
 ----------
Solution:  Thu Sep 2 10:50:32 EDT 1982
Change $G/Smakefile for aliases hp7221, hp7221h hp7221v
=========
749: Wed Sep 1 14:24:37 EDT 1982
Fix $B/Smakefile to specify the correct order for the apply library.
lorder|tsort gets loops and may not create the proper ordering.
 ----------
Solution:  Thu Sep 2 14:28:43 EDT 1982
Change $B/Smakefile.
=========
731: Thu Jul 22 14:58:37 EDT 1982
$P/rpois.r calls runifs instead of uni.  There is no runifs.
 ----------
Solution:  Fri Sep 3 11:02:15 EDT 1982
Changed.
=========
753: Fri Sep 17 07:37:01 EDT 1982
allen reports problem with den= arg causing TSTRING(den) to be turned into
"rs(...)" inside $B/glim.i
 ----------
Solution:  Fri Sep 17 07:57:58 EDT 1982
Changed istrng(TSTRING(den),3) into STRING(den).
=========
757: Tue Oct 5 14:30:08 EDT 1982
Change axes so that no error messages are given for title, sub, xlab, ylab
if they are null, even if they would not fit in the existing margins.
 ----------
Solution:  Tue Oct 5 15:10:17 EDT 1982
Change $G/axes.i.
=========
758: Wed Oct 6 07:32:21 EDT 1982
Modify leaps to allow user input of df parameter.  Useful if user has
already fit certain terms and thus residuals are on fewer df.
 ----------
Solution:  Wed Oct 6 07:49:05 EDT 1982
Done.
=========
679: Wed Feb 10 07:19:43 EST 1982
From mhb5c!wjs Sun Feb  7 12:17:41 1982
I think there is a problem with GRZ when terminals
position their characters from the upper left hand
corner. HP2648 or HP2623 terminals select how characters
are positioned through an escape sequence. In
particular ESC*m3Q positons characters from the
upper left. I generated the problem by modifying my
device driver for the 2648 so am(26)=0. and am(27)=1.
I used the escape sequence to set the terminal for
the coresponding character positioning, then executed
plot(1:10,1:10) in S. I get four warnings
a point out of bounds at (10,10), a line out of bounds
at (0,0), a line out of bounds at (10.04796,0), and
a line out of bounds at (10.04796,10.16854). The
driver for the 2623 should generate similar errors. The 
problem, if it exists, must be in the calculation of
am(32), am(33), am(34), and am(35).
 ----------
Solution:  Wed Oct 13 08:35:00 EDT 1982
Change $GRZ/ztextz.r zpntsz.r and zscalz.r -- zscalz sets correct am(32)-am(35)
and ztextz,zpntsz modify their clipping during seeks so that seeks that will put
a character center inside the plot region are ok.  Unfortunately, this will
not really go away until all graphics stuff is reloaded, since zscalz
is in every graphics function.
=========
761: Thu Oct 21 10:06:34 EDT 1982
Change the aed512 polygon filler to get rid of the overlay of polygon
outlines by retracing the outline in the desired interior color.
 ----------
Solution:  Thu Oct 21 10:07:30 EDT 1982
Change $GRZ/../aedsource/zpolyz.r to retrace outline at end.
zseekz changed so that all colors are done mod 256, so that color+256
enables 8th plane for overwriting.
=========
762: Thu Oct 21 12:23:03 EDT 1982
Make the warning message that "T is a built-in name" or function name be explicit
about the desired user reaction.
 ----------
Solution:  Thu Oct 21 12:30:57 EDT 1982
Change $M/u/funev.r and $B/assign.i to print better messages.
Add L_PAREN, QUOTE, R_PAREN to $I/print.m.
Reload main, $B/assign.
=========
747: Tue Aug 31 15:22:02 EDT 1982
Problems with barycentric plots:  mac.barycentric and mac.mixplot
have inconsistent views of 2nd and 3rd variables.  Change one.
?barycentric dies on rabbit, presumably because of >14 chars limit.
Check out $S/u/statck.c -- it doesn't seem to add terminating \0.
 ----------
Solution:  Fri Oct 22 06:37:07 EDT 1982
Problem was that macro had not been reloaded since statck was fixed up
for the 14-char file name limit problem.  Reload macro.
=========
754: Mon Sep 27 07:11:24 EDT 1982
write function should allow NAs.
 ----------
Solution:  Thu Oct 28 07:46:26 EDT 1982
Change $B/write.i
=========
765: Thu Oct 28 10:43:34 EDT 1982
Make S manual pages available to users (pf, etc).
 ----------
Solution:  Thu Oct 28 10:44:20 EDT 1982
Create $C/MAN command.  User says
S MAN pf
and gets doc.
=========
767: Fri Oct 29 07:48:17 EDT 1982
Create macro for editing of matrices using text editor.
 ----------
Solution:  Fri Oct 29 07:48:55 EDT 1982
Macro ?matedit created and documented.
=========
769: Mon Nov 1 10:58:40 EST 1982
diag(rep(NA,10)) doesn't work because diag doesn't use pcopy.
Also diag(NA) gives wrong error message.
 ----------
Solution:  Mon Nov 1 11:51:57 EST 1982
Modify $B/diag.i
=========
678: Wed Feb 10 06:50:20 EST 1982
SYSGEN problem: GRZSYSGEN makes standalone drivers for stare, prism, photo
before making stuff in $G, but $L/stare.z, etc. created in $G, and thus
is missing during GRZSYSGEN.
 ----------
Solution:  Wed Nov 3 07:18:26 EST 1982
Make $L/stare.z etc in $GRZ/../standalone.  Remove them from $G/Smakefile.
mv $G/devdum.r $GRZ/../standalone
Also, renamed $GRZ/.. directories to match device names
mv aedsource aed512
and modified Smakefiles so that MAKE makes all relevant stuff.
Change $C/GRZSYSGEN to reflect the change.
=========
732: Tue Aug 3 15:29:08 EDT 1982
It might be possible to speed help up significantly if, instead of reading
fun.tab, the code just tried to open the file whose name was the argument.
Then, if found, hroff it.  Otherwise, look through fun.tab.  Then the only
things in fun.tab would be aliases.
 ----------
Solution:  Mon Nov 8 10:36:28 EST 1982
Change $B/help.i, create $B/hlpsrc.r to do the searching.
Things are significantly faster.  Modify fun.tab files in $HELP, s/data/.help,
sshare and slocal.  Change NEWDOC to not create the "abc abc" entry in fun.tab
so generally fun.tab stays small.
=========
697: Fri Apr 2 07:29:15 EST 1982
Create function for assisting in menu-oriented applications.
 ----------
Solution:  Mon Nov 8 11:35:57 EST 1982
$G/menu.i plmenu.r.
=========
771: Mon Nov 8 11:55:23 EST 1982
Create device driver for HP2627 color scope.
 ----------
Solution:  Mon Nov 8 11:55:53 EST 1982
$GRZ/../hp2627 directory of source.
=========
584: Tue Jun 23 08:51:33 EDT 1981
Making a big main requires changes to the Smakefile and/or to the
location of many support routines (e.g., grz & macro routines).
 ----------
Solution:  Tue Nov 9 14:50:04 EST 1982
Changed $M/Smakefile to search $L/macro $L/grz, etc.  Done quite some time ago.
=========
641: Tue Nov 3 07:39:10 EST 1981
Just a remark:  if a user defines a macro f(x) to be
$Tx_3 and then translates it to ?T(x)_3, note that
in the define process, ?T(x) becomes ?T($1).
If there were two args f(x,y) and ?T(x) and ?T(y) were
used, ?f(1,1) would yield two temporaries with identical
names!
Perhaps ?T() should be special in the definition process so that it doesn't
become ?T($1).
 ----------
Solution:  Wed Nov 10 06:54:39 EST 1982
Change $B/argno.r so that ?T(....) treated like ?(...) -- arguments within
the parens are not changed into $n form.  Reload define.
=========
768: Mon Nov 1 09:15:15 EST 1982
Macro processor problems:
Now that quit doesn't remove Stemp* files, lots of junk left around by macro
processor named Stemp* whenever macro() FATALs.
For example ?FATAL(die) leaves an Stemp* file lying around.
Also, when macro() executes ?FATAL, its output buffer is apparently not flushed
for the next invocation, since the stuff that was there is put out in the
next invocation of macro.
(Look at variable curpos in $MAC/putc.r)
 ----------
Solution:  Wed Nov 10 07:31:52 EST 1982
Change $B/u/macro.i to unlink in ONFATAL() stmt, change $MAC/ macro.r putc.r
to initialize the buffer on entry rather than with a static value.
Other changes made to macro.r and gettok.r to
1) recognize "#" and not interpret anything beyond it in macros
2) recognize both single and double quotes as string delimiters
3) change so that carriage return after argumentless macro would not
   be eaten
=========
740: Fri Aug 13 22:19:41 EDT 1982
The following input line causes the macro processor to die with
TERMINATING: < chpget > Request for memory denied
(possibly too long a line??)

?model(c(numdist[-c(32,79)],numdist[-c(34,38,87,106)]), c(kfcomb[-c(32,79)],kncomb[-c(4,38,87,106)]), distlab,klab,maink,subfreq)
 ----------
Solution:  Wed Nov 10 07:34:48 EST 1982
Fixed with 768 -- bigger buffer and check of size in $B/u/macro.i
=========
725: Fri Jun 18 15:52:27 EDT 1982
?MESSAGE(test)  # ?def
The macro processor tries to invoke mac.def even though
it is after a sharp character.  Dies if mac.def not there.
 ----------
Solution:  Wed Nov 10 07:35:23 EST 1982
See 768.
=========
708: Fri May 14 17:36:00 EDT 1982
The following macro screws up:
MACRO zork
encode('"',?PROMPT(huh),'"')
END
since, when invoked as
?zork
causes an infinite loop, repeatedly expanding into its one line, re-invoking
the macro processor, etc.
Apparently macro decided that the ?PROMPT was within a quoted string, but
the executive thought it wasn't and thus re-invoked macro each time.
 ----------
Solution:  Wed Nov 10 07:35:48 EST 1982
See 768.
=========
480: Mon Feb 23 11:18:16 EST 1981
When the macro processor encounters a macro call, it
does not put out the newline at the end of the calling line
Ex.
 ?abc
 w_3
will expand with the second line pasted to the end of the last
line in macro abc's definition
(Note that we need to ignore the final cr inside a macro,
otherwise 1+?abc+2 wouldn't work correctly, e.g., if ?abc was "def"
don't want to produce 1+def\n+2)
----------
Solution:  Wed Nov 10 07:37:46 EST 1982
Trouble was that while looking for arguments to macro abc, $MAC/macro.r
ate the newline as whitespace.  With solution of 768, newlines may be
omitted from whitespace test.
=========
459: Wed Jan 14 15:36:01 EST 1981
If a<-matrix(0,3,1); rbind(a,a) does not produce a 6 by 1 matrix
but rather a 2 by 3 (the column matrix is treated as a vector.
 ----------
Solution:  Wed Nov 10 10:12:58 EST 1982
Change $B/bind.i, new $S/isarry.r that tests if data structure is an array.
Basically, vectors given to rbind/cbind are treated as rows/columns.
The code uses isarry to determine if, on input, an arg is explicitly
a row or column matrix.
=========
752: Thu Sep 2 14:30:10 EDT 1982
m4 $I/read.m -
DECODE(GETC(a))
produces
{ __call decgch(a,1,FALSE) }
which may screw up f77 (actually, ratfor strips the _ off, but cratfor doesn't)
Problem is that GETC defined as __GETC and DECODE puts __ on front of its args.
See $S/dget.r
 ----------
Solution:  Mon Nov 15 13:16:01 EST 1982
Kludge - in $I/read.m define __call as call.
=========
773: Tue Nov 16 11:47:36 EST 1982
Add telephone area-code/exchange data to system database.
 ----------
Solution:  Tue Nov 16 11:56:07 EST 1982
Datasets phone.x,y,nnx,npa,bell,state, and documentation.
=========
575: Fri Jun 12 11:31:09 EDT 1981
Fix up $M/u/loader.c for various operating system environments.
1) for Berkeley, use vfork rather than fork.
2) to close files on exec, use ioctl(FIOCLEX) on 32V, fcntl(FSETFD)
on 3.0.
 ----------
Solution:  Wed Nov 17 07:42:58 EST 1982
Done - also change $M/u/doact.r to preserve sink file on exec, $M/u/devldr.c
to omit old file closing stuff. Create $P/u/aclose.c to do 2) above,
modify $P/u/sopen.r to call aclose on all files.
New $B/applylib, executive.
=========
755: Mon Sep 27 07:37:07 EDT 1982
From ark (Andrew Koenig) Fri Sep 17 09:27:33 1982
Subject: integer division
Newsgroups: net.math

It is consistent to have the remainder have the same sign as the dividend
or as the divisor.  Provided that division and remainder are consistent
with each other (in other words, that (a/b)*b + a%b is equal to a)
exercising the choice one way or the other has different implications.

For instance, if you say the divisor should have the same sign as the
remainder, you make the remainder operator behave more like the
normal mathematical usage, so that (-1)%3 would be 2.  This usage
is actually nice for preventing surprises:  if you take a%b and b
is positive, this choice guarantees a non-negative result.  Thus,
for instance, you could use % for division hashing with the assurance
that the remainder would indeed be a valid index in your hash table.
However, if division is to be kept consistent, it must always truncate
down in this case.  This violates the sometimes useful idea that
(-a)/b should always equal -(a/b), and would have (-3)/2 equal to -2,
for example.

The other choice is to make the remainder and dividend have the same sign.
This preserves (-a)/b equal to -(a/b) but now means that (-1)%3 is -1.

I suppose intuitive behavior on division is better than on remainder.

The language that has my favorite treatment of this issue is APL.
In APL, the remainder has the sign of the divisor, and the issue
of counterintuitive division is handled by having division return
a real number at all times.  If you want truncating division,
you must do the truncation yourself and it will truncate any
way you asked.

 ----------
Solution:  Wed Nov 17 07:46:34 EST 1982
Change %% to Knuth's definition (as above) a mod b = a - b*floor(a/b)
if b!=0, a otherwise.
$B/doops.r, new infixo, executive.
=========
774: Wed Nov 17 07:49:30 EST 1982
Another go-round with table subscripts.  When table is subscripted down to
a scalar, the Label component should go away (was coming out as structure
of 0 entries).
 ----------
Solution:  Wed Nov 17 07:50:44 EST 1982
Change $B/subset.i so that 1-dim table is table, 1-dim array is vector,
0-dim table is vector, table subscripted by vector is vector,
categories remain categories.  I think it's right now.
Reload subset, executive.
=========
777: Sun Nov 21 17:56:42 EST 1982
Pie chart labels are misplaced if exploded.
 ----------
Solution:  Sun Nov 21 17:57:11 EST 1982
Change $GRZ/piez.r, reload $G/pie.
=========
780: Tue Nov 30 13:35:41 EST 1982
Bug in pic device driver:
plot(1:15) works ok, xx_1:15; plot(xx) omits y tick labels at 2,4,6,8.
Probably ncp parm not updated for horizontal strings.
 ----------
Solution:  Tue Nov 30 14:35:09 EST 1982
Change $GRZ/../pic/ztextz.r to update ncp for horizontal strings.
Reload $L/pic, $G/dev.pic.
=========
778: Tue Nov 30 08:16:50 EST 1982
When using pic device driver, the x,y: prompt for graphic input goes
to the pic.out file instead of the terminal.
 ----------
Solution:  Tue Nov 30 14:37:43 EST 1982
Change $GRZ/u/zquxyz.c to put message on stderr rather than stdout.
=========
785: Fri Dec 10 16:50:35 EST 1982
Create fatal/message/warning function for use at execution time
(like the macros ?FATAL, etc).
 ----------
Solution:  Fri Dec 10 16:51:18 EST 1982
$B/fatal.i, $HELP/fatal.
=========
782: Thu Dec 2 09:55:28 EST 1982
Add crossprod function as alias with %c.
Modify so that 1 matrix arg can be used, allow optional weights.
 ----------
Solution:  Fri Dec 10 17:35:48 EST 1982
Rid of $B/matpt.i i/matpt.c, replaced by crossprod.i i/crossprod.c.
Also rename and revise $HELP/crossprod.
Didn't do the weights, but would be easy with a change to $P/matpt.r
(it would be nice to clean up that calling sequence, too)
=========
786: Sat Dec 11 08:23:29 EST 1982
Create directory for old versions of things -- not to be exported
yet potentially useful.
 ----------
Solution:  Sat Dec 11 08:24:19 EST 1982
$SHOME/preserve now contains pread, prestore, pdget, the portable
versions of these functions that now are faster because of C-based
support routines.
=========
430: Tue Dec 30 15:45:33 EST 1980
It would be nice if the extract utility were consistent with reading
e.g., by using the ENCODE, DECODE macros.
The routine $UTIL/fldout.r is conceptually the needed
translation of the c routine in extract.c, with changes needed
in the calling sequence to be FORTRAN compatible.
Is the improvement worth the loss of efficiency?
 ----------
Solution:  Wed Dec 15 06:02:31 EST 1982
We have gone the other way -- rewriting read() to use c routines rather
than the portable fortran in order to gain efficiency.
Not worth the effort to work with fldout.r now.
=========
512: Wed Mar 25 09:36:56 EST 1981
Extend extract to allow several contiguous columns of a file
to be made into a matrix, rather than needing names for lots of separate
vectors.
Also, 1) have errors FATAL/WARN, replace with NA/replace with NA silently.
2) Allow white space separator.  3) Check REAL/INT fields for non-numeric
data, replace with NA  4) Fields beyond end of line treat as empty:
numeric becomes NA, char becomes "".  5) Option for multiple lines per record.
 ----------
Solution:  Wed Dec 15 06:04:09 EST 1982
Ideas 1,2,3,4 solved in new $SHOME/s/util/extract.c.  The others are a bit
more ambitious and can wait.
=========
792: Tue Jan 11 10:58:36 EST 1983
Have special place for bell system datasets.
 ----------
Solution:  Tue Jan 11 10:59:58 EST 1983
Create $SHOME/bell/sdata and sdata/.help to hold datasets and doc.
Moved mail, nytel, phone into this directory from system database.
Also new dataset bssp for Bell Sys savings plan.
=========
794: Thu Jan 13 06:53:40 EST 1983
Provide a mechanism for the graphical menu() function to erase the menu
when selection is complete.
 ----------
Solution:  Thu Jan 13 06:54:16 EST 1983
Change $G/menu.i plmenu.r to add how=4 argument that replots the items in
color 0 after the user has made a selection.
This should overwrite the items with background color on some raster devices.
=========
756: Fri Oct 1 15:03:42 EDT 1982
Compiler error: floating exception in $P/alngam.
Seems Berkeley f77 can't accept 0.17014118E39, (R1MACH(2)), but
0.17014117E39 works ok.
 ----------
Solution:  Fri Feb 4 08:28:52 EST 1983
Change R1MACH in $I/u/mach.m to the slightly smaller number.
=========
806: Mon Mar 21 11:52:32 EST 1983
Barplot has problems with legends:  the code for legndz was changed to
take mark, etc. and the call in barplot.i was not changed.
 ----------
Solution:  Tue Mar 22 07:19:39 EST 1983
Modify $G/barplot.i and reload.
=========
809: Mon Apr 11 14:50:40 EST 1983
Modify $P/backsu.r to avoid addressing outside of array bounds.
 ----------
Solution:  Mon Apr 11 14:52:01 EST 1983
Done.
=========
810: Thu Apr 14 14:32:38 EST 1983
write is not closing its output file.  Loop that uses write eventually
uses up all file descriptors and dies.
 ----------
Solution:  Thu Apr 14 15:00:41 EST 1983
Call sdetac just prior to returning.
=========
812: Sat Apr 16 10:59:33 EST 1983
Create a report generation facility for S.
 ----------
Solution:  Sat Apr 16 10:59:59 EST 1983
$C/REPORT $C/report.in report.out /usr/s/s/util/report(in|out).c
$HELP/REPORT
=========
These next few lines deal with the virtual-memory version of S
constructed initally on Gauss
==========
1: Fri Feb 4 08:14:22 EST 1983
Change $I/u/mach.m to use .17014117E39 rather than 8E38 in R1MACH(2).
 ----------
5: Thu Feb 24 12:21:22 EST 1983
Apply works if the debugging common block is removed.
This may indicate that apply can reside reasonably in the executive!
 ----------
6: Thu Feb 24 12:52:24 EST 1983
Random number generators in large executive don't work since the C
version of uni is in rather than the ratfor one.
To make the C version work, we need to use cseedi/cseedo
around getseed/putseed.
 ----------
7: Thu Feb 24 14:04:57 EST 1983
Change seedin/out to cseedi/o in $I/intf.m.  Also comment out the
common declaration for the qssnap common block.
Recompile ranfun.i, sample.i, apply, tapply, sapply
 ----------
8: Thu Feb 24 14:46:32 EST 1983
sort doesn't work on NEW.S
because mstree contains a sort routine that conflicts with the one on psl
 ----------
12: Tue Mar 1 10:53:56 EST 1983
Functions that are internal are not recognized when given all by themselves
on a line -- for example
q
gives q not found;  however
q()
invokes the internal quit.
 ----------
13: Tue Mar 1 12:17:16 EST 1983
Modified $S/u/isfun.r to know about internal functions (incorporates
code from $M/u/infun.r).
 ----------
14: Tue Mar 1 13:49:08 EST 1983
Good idea: get rid of trlit and alias -- the more general internal
function stuff supercedes them.
 ----------
15: Wed Mar 2 06:14:15 EST 1983
Modified sapply.i to set NAME(FIRSTENT(finstr)) to NULL prior to the call
of the applied function.  It had been causing trouble because it got set to
USED by the applied function, and was thus unavailable on the next call.
 ----------
16: Wed Mar 2 09:14:39 EST 1983
Change yypars.r to invoke newblt rather than new.blt
(XNAME(new.blt) generates an invalid C function name and screws
up the internal executive).
 ----------
17: Thu Mar 3 17:30:44 EST 1983
Change sys.boot's name to omit the . so that it makes a reasonable
C name and can be part of the internal main.
 ----------
18: Mon Mar 14 10:41:07 EST 1983
Modify $GRZ/../indsource/ind.c so that zwrapz resets the first time switch
firtim so that later zinitz's reinitialize.
Problem had been that printer; printer would cause death in second dev.printer
due to floating exception?
 ----------
19: Mon Mar 14 10:42:24 EST 1983
Modify $M/u/devldr.c to use vfork rather than fork.
 ----------
=================
End of changes related to virtual memory version
=================
817: Mon May 2 06:53:48 EDT 1983
Modify the S shell script so that it sets SHOME only if it was
not previously set.  This means that, for example, NS can have a
different value of SHOME, and when it invokes S (for example, in
edit), it will still use its new version of SHOME.
 ----------
Solution:  Mon May 2 06:55:23 EDT 1983
Change /usr/lbin/S, $C/SETUP.S to create initial line in S script like:
SHOME=${SHOME-/usr/s}
=========
818: Mon May 2 14:46:49 EDT 1983
Fix problem in new large S executive:  apply gets in trouble when applying
external function.
 ----------
Solution:  Mon May 2 14:48:46 EDT 1983
Problem was that external function set the action code to PRINT_ACTION, which confused
inact.  Changed $M/u/ inact.r doact.r infun.r to also allow PRINT_ACTION
as an ok action, omit lots of actions from doact.r that are now inside
the code for functions.
=========
819: Wed May 4 06:36:23 EDT 1983
Modify S executive:  1) prevent stack errors in executive from causing
infinite loop.  2) trap sigquit and die without core dump?  The argument
is that noone ever looks at it.  Perhaps 1) alone is sufficient and the
quit stuff is used only to stop the loop.
 ----------
Solution:  Wed May 4 08:33:02 EDT 1983
Modify $M/u/main.c to check for error occurring during the reset operation.
=========
820: Wed May 4 08:31:37 EDT 1983
Problem with new executive:
apply(1:5,1,"pchisq",7)
Gives
Error: first parameter of distribution required
Error in pchisq
Error in apply

Also, report that apply(...,"mean",trim=.25) does trimmed means
for the first vector, but untrimmed ones after that.

apply(1:5,1,"sqrt",junk=1) prints error message about too many args
twice, and then kills the executive with address error.
 ----------
Solution:  Mon May 9 11:34:35 EDT 1983
Modify apply.i tapply.i sapply.i jackknife.i to make a copy of the input
structure each time before calling the applied function.  Problem
was that the applied function could clobber its instr on the first time
around, and then have trouble on the second.
=========
816: Fri Apr 29 08:14:11 EDT 1983
axis function should have outer=T flag to allow axis in outer margin.
 ----------
Solution:  Mon May 9 11:36:02 EDT 1983
Change $G/axis.i $HELP/axis.
=========
824: Mon May 9 11:38:23 EDT 1983
Add new axis style "r" which gives "rational"
axis with 7% space on each side of most extreme points.
 ----------
Solution:  Mon May 9 11:39:26 EDT 1983
$G/stdaxz.r timaxz.r logaxz.r zstylz.r changed for new axis style.
Reload S executive.
Change $HELP/par.
=========
823: Sat May 7 09:10:08 EDT 1983
 S
> plot(1:10,1:10)
Error:  Device not active
Error in plot
> hp2623
GR-Z Error from Routine zrdszz
Invalid raster sizes -- will use default
S error: floating point exception
Error in newdv
 ----------
Solution:  Tue May 10 08:20:49 EDT 1983
In $GRZ/../indsource/ind.c, firtim flag was set to zero before
confirmation of an active graphics device.
Move the flag to a later point in zinitz_().
=========
240: Thu May 1 06:18:09 EDT 1980
Mysterious deaths of S executive seem to be occuring because of segmentation
error signals (11).  New signal-catching stuff in u/main.c prints this then dies.
What causes it?  Seems to be in malloc and seems most prevalent when response is fast.
Also, functions sometimes terminate abnormally when interrupt is hit during
execution.  Does u/link.c need to be tightened up to prevent this problem?
More on above::
seems to go away if the lengthy debug printing in rststk is put on.
On successive tries, get p==alloct then q>p... botch messages;
one very quickly, the other after a while.
More (5/2)
Modified version made which tracks the last 20 allocations.
Unfortunately, can only make this one die (so far) by hitting interrupt.
The S main has been copied to $C/T1.S
----------
Solution:  Tue Jun 14 15:13:32 EDT 1983
Currently, this isn't a problem, although it might revive again if we
ever tried to take out the comments in rststk in $P/malloc.C.
=========
368: Mon Oct 13 09:51:33 EDT 1980
Various things to do with random number generators..
(1)Debug & install the C version of uni (assuming it is significantly faster)
(2)Fix random nos (& prob & quantile) so all defaults make sense::
e.g., rlnorm(n) should generate standard log-normal
SOLVED (see entry 472)
(3)Develop (if interesting) new generators reflecting papers in JASA, Sep.80
  673-686. In particular, the exponential power family might be interesting.
(4)Be smarter about writing the low-level algorithms to produce a vector of
  results with 1 initial calculation of setup stuff (also applies to probabilities and quantiles)
(5)Make GETSEED die cleanly if Random.seed is wrong length.
(8/14/81, add FATAL to $I/intf.m if not length 12)
(6)write a seed function to set one or both of the seeds from
user supplied integers. Have it first read Random.seed & not change
seed if corresp. arg is MISSING. return the previous seed values.
(8/14/81, write $P/ranset.r to allow setting of seeds via 2 integers)
 ----------
Solution:  Tue Jun 14 15:15:45 EDT 1983
Parts 1, 2, and 5 have been solved.  Will re-enter 6, 3.
=========
371: Tue Oct 14 06:25:02 EDT 1980
Fix up SHARE command for restricted uucp, alice vs MHCC, etc.
 ----------
Solution:  Tue Jun 14 15:21:38 EDT 1983
SHARE is a can of worms -- get rid of it.
=========
399: Mon Nov 10 06:30:41 EST 1980
When a plot with lots of points is inerrupted, the device
driver seems screwed up -- next plot cmd causes warning that process
terminated abnormally.
 ----------
Solution:  Tue Jun 14 15:22:42 EDT 1983
This seems ok recently.  Will look for recurrence.
=========
431: Wed Dec 31 09:46:59 EST 1980
Can anything be done to help those who insist on writing `for' loops?
Education as a solution seems impractical. One idea is the following extension
of built-in datasets. A function, say,
	keep(x)
has the effect of putting the current copy of `x' on the built-in list
(needs to fiddle the stack slightly). Subsequent gets & assigns would
look on the built-in list. Get is trivial (no change?). Assign could be
handled two ways: what you really want to handle is not arbitrary assign
but something like (shudder!)
	x[i,j,k] _ (i+j)/k
in (of course) a triply-nested for loop.
EITHER require that the assign match the size of the original if on the built-in
list OR (better) modify the parser so that this expression is handled by
a `reassign' function, not by replace followed by assign.
The user can then put `keep' before loops. He is obliged to get `x'
back onto database by
	restore(x)
after the loops. Otherwise the new x disappears when he quits.

Related: random numbers would be better if they put the seed into the
built-in list. Would be much more efficient & also would mean that
the generator doesn't get incremented if the statement doing the simulation
fails. Some technique for cleaning up the built-in list at the end of
a `statement' could handle this.
 ----------
Solution:  Tue Jun 14 15:23:47 EDT 1983
This is partially answered by some of the ideas in JMC's new executive.
=========
468: Fri Jan 23 13:56:06 EST 1981
Functions that wake up after a long wait should die, rather than
going back to sleep. Orphan processes would then eventually disappear.
 ----------
Solution:  Tue Jun 14 15:27:12 EDT 1983
Orphan processes don't occur much anymore.
=========
546: Mon May 4 08:44:41 EDT 1981

>From sport Sat May  2 09:10:17 1981 remote from mhuxm
apply, sapply and tapply could be made to evaluate a general expression
on each "link". The procedure would be to pass a parse tree as an argument.
One name in the parse string would be special (a "lambda" variable).
The apply functions would arrange that a built-in data set with
this name would be created with the section of the structure or array
to be processed.  Then they would invoke steval recursively on
the parse tree, adding the value of the expresssion to the result
structure.
The parse tree can be made by invoking sxparse on a character vector; i.e.,
by having a parse function.

 ----------
Solution:  Tue Jun 14 15:28:23 EDT 1983
This is pretty complicated. JMC's new executive should make such
things more efficient in for-loop form.
=========
574: Fri Jun 12 11:26:37 EDT 1981
apply(m,1,"stem") dies after second call of m.
 ----------
Solution:  Tue Jun 14 15:29:34 EDT 1983
It's ok now.
=========
582: Fri Jun 19 16:50:44 EDT 1981
infun.awk needs to protect the function names in u/inlink.m
infun.ed needs change to get #.* out reliably
The MAKE for  MAINLIST doesn't work
 ----------
Solution:  Tue Jun 14 15:31:04 EDT 1983
This code reworked extensively for new source code organization.
=========
709: Fri May 14 17:38:57 EDT 1982
The hp7225 is apparently only 7.75" high, thus the upper line is
clipped in the sequence
hp7225
par mar=rep(0,4)
box
Should the hpgl driver be changed to use 7.75 for everything, or should
it remain 8x10 with an exception for the 7225.  Will anyone every buy another
7225 now that the 7470 is available for half the price?
 ----------
Solution:  Tue Jun 14 15:32:17 EDT 1983
7225s seem pretty well dead.  leave the default alone.
=========
822: Wed May 4 16:24:44 EDT 1983
When a graphics routine is called (zinitz, zlinsz, zpntsz, ztextz, etc)
any prior changes to the am() array are flushed out to the device
driver prior to the operational routine and arguments.  In our
interface code ($I/u/cinter.m), any graphics routine always began with
zinitz which caused the am array to be loaded.  The normal graphics
stuff proceeded, and finally, the interface code invoked zwrapz, which
flushed any final am() changes out to the device.

Now, with the big executive, all of the functions share the internal
version of am().  However, when the par() function is invoked, no one
calls zwrapz at the end to make sure the device driver gets the new
values of the parms.  If a user-written graphics routine is invoked, it
will get the old version of the am() from the device driver.
 ----------
Solution:  Tue Jun 14 15:37:00 EDT 1983
$M/link.C changed to call saveam() before invoking external function
when dpid is non-zero.  This flushes the parameters to the device driver.
=========
831: Wed May 25 08:50:17 EDT 1983
in $P/gtline.c, may get error in reading (n<0).  If so, this fatals,
and the executive gets into a loop printing the message, retrying the read,
etc.
 ----------
Solution:  Tue Jun 14 15:38:28 EDT 1983
Changed from FATAL to TERMINAL to avoid this looping.
=========
832: Wed May 25 14:02:26 EDT 1983
hclust(matrix(1:64,8,8)) gets memory fault.
 ----------
Solution:  Wed Jun 15 14:19:31 EDT 1983
hclust.i used STRUCTURE(Size,FROM(dist),OPTIONAL/) rather than
STRUCTURE(Size,FROM(dist),1/) which allocates 1 INT if Size is missing.
=========
718: Tue Jun 1 14:22:04 EDT 1982
Should be a function diaryprint(...) to print results on the
diary file so that interesting things can be recorded there.
(Or have arg diary=T/F for print; diaryprint could be alias).
 ----------
Solution:  Wed Jun 15 16:10:28 EDT 1983
Modify sink() to allow a  logical argument; sink(T) means sink into
the diary file.
This allows regress, etc to go to the diary.
=========
808: Fri Apr 8 12:12:07 EST 1983
medit.i calls excmd with argument -1, but excmd doesn't recognize that.
Just have excmd do the insertion of the EOS if the position is positive.
 ----------
Solution:  Thu Jun 16 10:36:59 EDT 1983
Modified $S/excmd.C
=========
801: Tue Feb 1 16:35:06 EST 1983
lang3.yr calls alcves with 5 args instead of 3.
Also, $M/u/main.c calls sxpars_() with 0 rather than 1 arg.
 ----------
Solution:  Thu Jun 16 10:59:06 EDT 1983
Fixed.
=========
807: Wed Mar 23 05:29:00 EST 1983
$GRZ/barz.r called from $GRZ/hhistz.r has wrong no of args in the call.
 ----------
Solution:  Thu Jun 16 12:33:03 EDT 1983
Fixed.
=========
772: Tue Nov 9 15:06:39 EST 1982
Revise stack file id so that it is large (say 14) rather than small (current 4).
Then less problems invoking S by other processes that may have fd's open.
 ----------
Solution:  Thu Jun 16 12:34:02 EDT 1983
Change $I/u/link.m.
=========
787: Tue Dec 14 12:30:46 EST 1982
Extend the macro processor default sizes:  options(macsize...
is probably too small.  Also, if a user has lots of long default values
for macro args, define can run out of space
MACRO junk(
arg1/?PROMPT(give me the value of the first argument:)/,
arg2 ...
arg9 ...
)
can get pretty big.
 ----------
Solution:  Thu Jun 16 12:47:06 EDT 1983
Modify $I/macro.m, $F/sys.boot/sxinit.r to increase sizes.
=========
724: Thu Jun 17 19:31:41 EDT 1982
Why don't we just rm the Stemp* file as soon as it is attached, rather
than waiting till quit to zap it?
Should quit look for Proc.* files and zap processes automatically
so that things like glim will go away?
 ----------
Solution:  Thu Jun 16 12:51:28 EDT 1983
The Stemp files are now removed.  Proc.* files aren't really that interesting
to muck up the executive with knowledge of them.
=========
637: Wed Oct 14 16:33:32 EDT 1981
Extract isn't able to handle fields separated by
white space (e.g., multiple blanks).  It should.
 ----------
Solution:  Thu Jun 16 12:53:14 EDT 1983
It does.
=========
511: Wed Mar 25 07:53:40 EST 1981
A couple of changes have been made to malloc -- perhaps $P/u/malloc.c
should incorporate them?
 ----------
Solution:  Thu Jun 16 12:54:39 EDT 1983
Better yet, get rid of malloc.  This will happen in a future
major revision..
=========
475: Tue Feb 10 09:20:48 EST 1981
Algorithm rnorms not in $P, even though $P/rchis.r rgamm.r use it.
Note also mentioned in Manual, section 7.3.4.
 ----------
Solution:  Thu Jun 16 12:59:10 EDT 1983
Change to rnormk.
=========
327: Fri Aug 22 10:06:56 EDT 1980
Try to do something sensible about commas in algorithm-lang messages.
At least FATAL, ... should use $*
----------
Solution:  Thu Jun 16 13:13:18 EDT 1983
Modified $I/stand.m
=========
305: Fri Jul 25 14:06:16 EDT 1980
some NOPRINT functions in conditionals seem to kill printing
even if the next expression is a PRINT. See $RUN/newbug for example.
----------
Solution:  Thu Jun 16 13:15:47 EDT 1983
See 813
=========
845: Thu Jun 16 19:45:09 EDT 1983
Modify the basic S shell script to that users are not forced to
have an sdata directory.
 ----------
Solution:  Thu Jun 16 19:46:04 EDT 1983
Change SETUP.S.
=========
846: Fri Jun 17 15:22:49 EDT 1983
The interface language construct NAOUT() only works for real values,
not integers.
 ----------
Solution:  Mon Jun 20 08:33:40 EDT 1983
Create $S/naout.r; call it from $I/intf.m instead of using nacopy which
only worked with REALs.
=========
841: Tue Jun 14 13:45:31 EDT 1983
Tried to create a profiler version of the S executive; got memory fault.
The reason:  mcrt0.c calls sbrk to get space for the profiling, prior
to executing the executive.  The call to sbrk asked for extra space that
was not a multiple of 4, thus when malloc called sbrk to get more memory,
it got back an initial value also not a multiple of 4.
This was ok for malloc, but unfortunately caused misalignment with the
zstakz common block, and jstkgt ended up clobbering half of one of malloc's
pointers.
 ----------
Solution:  Mon Jun 20 09:07:27 EDT 1983
Kludge added to $P/malloc.C which makes sure that current allocation
is a multiple of 4.
=========
844: Wed Jun 15 12:17:18 EDT 1983
make sure temporary files allocated in color/color.i are removed
Move color/ctable into $F/aed512.
 ----------
Solution:  Mon Jun 20 10:09:53 EDT 1983
call unlink in ctable.i color.i
Didn't move to aed512 directory since internal functions are loaded by
directory.  That would mean they could never be internal, since
aed512 is a non-internal device driver.
=========
625: Wed Sep 30 10:41:17 EDT 1981
code(x) where x has NAs, fails to produce group 1 which is
the NA group.  Instead, the first label is "0", and
the data component has no 1's in it.
 ----------
Solution:  Mon Jun 20 10:16:22 EDT 1983
Problem was failure to remove NAs from vector jprior to calling
sortv.  Changed code.i to use NAOUT if the default value of
levels was being used.  Had to fix $I/intf.m to allow integer stuff to use NAOUT -- it had called
nacopy which was set up only for REALS.  Created $S/naout.r.
=========
811: Sat Apr 16 07:23:19 EST 1983
From cew Tue Apr 12 22:37 EST 1983
Subject: Problem with code-ing real vectors containing integer values with NAs

Can you figure out what is going on the in following script.  This happens
both for S and NS.  Needless to say, this is somewhat reduced from my
original problem.

> #
> # Pord is a real vector, but has all integer values.
> #
> dput(pord[1:7])
  ( "" R 7  NA  NA  1  1  2  3  3 )
> #
> # Somehow this screws up code causing it to generate a screwy label
> #
> code(pord[1:7])

 $Label
      " 0"  "1"   "2"   "3"
 $Data
      NA  NA   2   2   3   4   4
> #
> # But eliminating one of the initial NAs gets rid of the problem
> #
> code(pord[2:7])

 $Label
      "1"  "2"  "3"
 $Data
      NA   1   1   2   3   3
> #
> # As does coercing the whole thing to INT
> #
> code(pord[1:7] %m INT)

 $Label
      "1"  "2"  "3"
 $Data
      NA  NA   1   1   2   3   3

 ----------
Solution:  Mon Jun 20 10:26:18 EDT 1983
See 625.
=========
838: Wed Jun 8 12:39:02 EDT 1983
On 3B computers that use IEEE floating point representation, our NA
value is equivalent to 2.0000002!  Thus 5.3-3.3 gives NA!
When producing the new version for the 3B, provide an olddump()
function (with the old NA value in dput),
so that users can convert their databases.
New installation instructions and modified $I/u/mach.m should fix.
 ----------
Solution:  Mon Jun 20 11:24:20 EDT 1983
create $F/olddump which contains an old version of natst.
This will allow users to dump current databases with the old version
of NA, and then restore them with the new version of NA.
=========
814: Wed Apr 27 13:24:20 EDT 1983
3.5:1 generates 3.5 2.5 1.0
1:5.5 generates 1 2 3 4 5 6
 ----------
Solution:  Tue Jun 21 13:24:31 EDT 1983
Change $F/seq/seq.i
=========
847: Tue Jun 21 13:28:40 EDT 1983
Have S executive attempt to close STACKFD file upon initialization.
That way, if prior routine had a file open, it will still not kill the
current invocation of S.  This could happen, for example, if a user
tried to use !S from inside S to get a clean version for testing.
 ----------
Solution:  Tue Jun 21 13:57:31 EDT 1983
Change $M/npinit.C.
=========
352: Wed Sep 24 08:34:26 EDT 1980
matplot appears not to reset lty upon chain to axes, since
a plot on hp7220h got dotted axes.
 ----------
Solution:  Tue Jun 28 08:00:41 EDT 1983
Can't recreate.
=========
640: Tue Oct 27 12:37:42 EST 1981
?ssweep macro doesn't work since split no longer has
3 arguments.
 ----------
Solution:  Tue Jun 28 08:19:43 EDT 1983
Get rid of it.
If x is data, group is category, can get the same effect by
summary _ tapply(x,index(group),"fun")
resid _ x - summary[index(group)]
Then, if desired, split resid.
=========
516: Mon Mar 30 15:16:25 EST 1981
Bug in icomp: argument declared MATRIX,INT
not treated as INT, but as REAL.  INT,MATRIX works OK.
 ----------
Solution:  Tue Jun 28 08:28:11 EDT 1983
More details in 760.
=========
849: Tue Jul 5 09:39:04 EDT 1983
$P/zzabt.C, $S/ssnap.C, wakeup.C, zzint.C should have 2 args to longjmp.
$I/u/driver.m, too.
 ----------
Solution:  Thu Jul 7 08:54:56 EDT 1983
Done.
=========
854: Wed Jul 13 10:00:22 EDT 1983
add argument call=T/F to help -- produces help listing only
through the calling sequence.  It can also be used as
call("stem")  to get the calling sequence for stem.
 ----------
Solution:  Wed Jul 13 12:26:47 EDT 1983
Change $F/help/help.i hroff.r; $HELP/help.
=========
859: Tue Aug 2 11:40:55 EDT 1983
Revise multi-dim scaling routine.
 ----------
Solution:  Tue Aug 2 11:41:29 EDT 1983
cmdscale provided by Sandy Pruzansky.  Drop mdscale.
=========
863: Tue Aug 9 15:29:01 EDT 1983
Problem with maximization: outstr was clobbered upon return from
the MAXIMIZING macro.
 ----------
Solution:  Tue Aug 9 15:36:44 EDT 1983
Fix intf.m -- negate called on qqgest pointer rather than RDATA(qqgest).
=========
870: Mon Aug 29 15:29:29 EDT 1983
?sablplot macro leaves the mfrow() and mar() parameters in a screwed up
state.  Also, the title should have a default (null).
 ----------
Solution:  Wed Aug 31 08:11:17 EDT 1983
Modify ?sablplot.
=========
872: Thu Sep 1 07:33:12 EDT 1983
if a <- array(c(1,5),c(2,3,4)); apply(a,1,"mean") gives
1 0; however apply(a+0.,1,"mean") gives 1 5.
Also, "sum" seems to work fine -- it's just mean that has troubles.
 ----------
Solution:  Thu Sep 1 17:43:24 EDT 1983
Fix apply.i to correct the problem.  It occurs when
applying "mean" or perhaps "sum" with
  1) Integer data 
  2) Real data containing NAs
It also only happens if you are operating on three or more-way arrays,
where each invocation of the applied function gets a
matrix (or array) rather than a vector.  That means that apply
should have done the right thing on all matrices or any
multi-way array where you were collapsing over only a single
dimension
  a _ array(1:24,2:4)
  apply(a,1,"mean")  # dies because of integer data and matrix-slices
   # (i.e. a[1,,]  a[2,,] are matrices)
  apply(a+0.,1,"mean")  # ok because real data with no NAs
  apply(a,c(1:2),"mean")  # ok because of vectors passed to mean

The problem has been lurking for quite a while (at least since June 25),
and hasn't been
spotted because of the limited number of circumstances in which it occurs.  
=========
874: Thu Oct 6 06:46:18 EDT 1983
Rik Littlefield reported that on Eunice, pipes blocked when given more
than 512 characters.  Problem was with communication of graphical parameters
from device driver to graphics function.
 ----------
Solution:  Thu Oct 6 06:47:19 EDT 1983
Modify $GRZ/../indsource/ind.C and $I/u/driver.m to use pread/pwrite to communicate
the parameters.
Also changed $P/pread.C pwrite.C to use PIPESIZE rather than constant 4096
to make it easier to modify.
Defined PIPESIZE in $I/u/mach.m
=========
892: Thu Dec 8 08:04:37 EST 1983
Change default value for delta arg of lowess to 1% of range of x
 ----------
Solution:  Thu Dec 8 08:05:07 EST 1983
$F/lowess/lowess.i
=========
865: Thu Aug 11 07:04:11 EDT 1983
Problem with text:  when adj<.1 or >.8 (nice symmetry)
the x position of the text is offset by a character width.
Unfortunately, this is irrespective of string rotation, and produces
surprising results with srt=90, for example.
It would be nice if the offset were adjustable, too. Sometimes
I don't really want an offset at all.  It is presumably there
so that plot(x,y); text(x,y,seq(x),adj=0) will work without overplotting.
 ----------
Solution:  Fri Dec 9 12:33:37 EST 1983
The whole option was misguided -- users can encode a blank (or blanks)
onto the front of the string if they want them spaced away from
the point with adj=0/1.
Modify $F/text/text.i to get rid of the whole offset thing.
=========
456: Wed Jan 14 10:57:48 EST 1981
Functions identify and text should be consistent in treatment of labels.
Cycle through labels in identify, and encode them; default seq(x) in text.
 ----------
Solution:  Fri Dec 9 15:08:39 EST 1983
Change $F/text/text.i $F/identfiy/identi.i
=========
889: Mon Dec 5 15:59:21 EST 1983
have loglin check that margin specification includes no values <0 or >ndim
(it currently just dies during execution in ugly ways).
 ----------
Solution:  Fri Dec 9 15:27:14 EST 1983
Install error checking in $F/loglin/loglin.i
=========
881: Sat Nov 5 10:10:19 EST 1983
Modify legend so that the box it draws is also done under xpd=T,
so that it doesn't get clipped if it is in the margin.
 ----------
Solution:  Mon Dec 12 07:42:26 EST 1983
$GRZ/legndz.r
=========
830: Mon May 23 08:24:42 EDT 1983
par() executed before a device driver doesn't give a Device not active
message -- it just doesn't work.
 ----------
Solution:  Mon Dec 12 10:26:21 EST 1983
Add call to zinitz at beginning to make sure device is present.
=========
888: Mon Dec 5 07:07:42 EST 1983
executing pardump() before specifying a device driver gives a partial
printout and a floating point exception.
 ----------
Solution:  Mon Dec 12 10:27:18 EST 1983
Add call to zinitz at beginning to make sure device is active.
=========
827: Thu May 19 10:42:13 EDT 1983
Problem with user-written graphics functions.  If a user-written function
sets parameters, their values are not sent back to the S executive.
For example, a user plot is set up, changing parm "usr".  The zwrapz in the
cinter routine forces the final changed user coords back to the device
driver, but nothing in the S executive gets the new set of parms from the
device driver.  Instead, pardump, etc uses the current am array local to
the executive.  Presumably, whenever an external function is executed,
at return we must go through an am initialization call such as done
by zinitz, so that the driver sends back the current am() to the executive.
 ----------
Solution:  Mon Dec 12 10:27:46 EST 1983
Change $M/link.C to call zbgrpz after calling an external routine whenever
a device is active (dpid!=0).
Add zbgrpz call to $GRZ/../indsource/ind.C -- same as zinitz except
that it doesn't look at first time flag.
=========
802: Wed Feb 2 15:17:12 EST 1983
pic doesn't produce output when run in BATCH.  Probably that the
interact flag in driver is not set.
Also, how about having width, height (default to 6x6) in the driver.
 ----------
Solution:  Mon Dec 12 10:31:00 EST 1983
add PIC and UNIXPLOT to $I/device.m and $I/u/driver.m
so that interact flag is set.
=========
856: Thu Jul 28 16:11:06 EDT 1983
The unixplot device driver doesn't work in batch, since the interact
flag is set FALSE.
 ----------
Solution:  Mon Dec 12 10:34:59 EST 1983
See 802
=========
781: Wed Dec 1 08:05:20 EST 1982
We should get rid of the graphical parameter blk(~).
It was useful when Fortran produced the strings to be plotted, but
why not now omit any implicit blank stripping in strarg and get
rid of blk?
 ----------
Solution:  Mon Dec 12 10:43:38 EST 1983
$GRZ/strarg.r changed to get rid of concepts of non-strippable
blank and blank stripping.
=========
893: Mon Dec 12 12:58:11 EST 1983
Revise the stem function so that the depth/count info is not printed
by default (it's confusing and not likely to be useful for computerized
analysis).
 ----------
Solution:  Mon Dec 12 12:59:27 EST 1983
$F/stem/stem.i added arg depth=.
$P/stem[iws].r $P/stem.r changed to do this, provide better messages.
=========
891: Thu Dec 8 06:54:37 EST 1983
help (hroff) should change "\-" into "-" for printing on
terminals.  The "\-" is necessary to get troff to produce
pretty en-dashes rather than hyphens.
 ----------
Solution:  Tue Dec 13 06:28:09 EST 1983
Change $F/help/hroff.r and hrfld.r for this as well as
making unrecognized ".xx" commands ignored (so that they
do not reset filling, indent, etc).
=========
882: Sat Nov 5 10:11:09 EST 1983
Terrible time-series axis generated from
plot(1:6000,type="n")
 ----------
Solution:  Tue Dec 13 06:48:55 EST 1983
$GRZ/ztintz.r used to try using decades for intervals if it got a very
large number of years.  Unfortunately, for 1:6000, there would be
600 intervals in the computation of tick marks, hence a terrible
axis.  Modified the code so that if the number of decades was >2
times the number of intervals suggested, that the standard axis be
set up with the standard number of intervals.
=========
799: Tue Jan 25 14:53:09 EST 1983
plot(1:1000,type="n") generates an awful x axis.  Problem with timaxz?
 ----------
Solution:  Tue Dec 13 06:51:59 EST 1983
See 882.
=========
886: Wed Nov 30 07:14:25 EST 1983
From wjs:
One of our people was using `extract' and he typed
the following description for a field in the file
"mar81 I l4" instead of "mar81 I 14". The sscanf on `des'
for this line only read two values and used the
previous value of `start'. This made the "mar81" data
set equal to the dataset that occured before it in
the description file. It would have been easier to
figure out what the problem was if `extract' complained
when sscanf didn't pick up the expected number of  
fields.
 ----------
Solution:  Tue Dec 13 07:28:45 EST 1983
Change $F/../util/extract.C to check and print warning message.
=========
866: Fri Aug 12 12:06:18 EDT 1983
Change coeves so that instead of printing
"Invalid mode in vector coerce"
it prints
"Cannot coerce vector of mode CHAR to mode REAL"
Also change $F/infixo/coeops.r to print 
"Cannot use character data" if max(modes)>DBL.
 ----------
Solution:  Tue Dec 13 09:59:56 EST 1983
Also change $S/coeves.r, create $S/gtmode.r
to give good error messages.
=========
723: Thu Jun 17 14:18:15 EDT 1982
The expression
c("abc",NA)
causes the executive to get a bad address and die.
 (c tries to coerce both args to the max mode, CHAR (5), however
 coeves lets the NA go and never dies on the coerce of integer to
 character mode, since NA is the only thing in the integer vector)
 ----------
Solution:  Tue Dec 13 10:20:55 EST 1983
Should be fixed with new $S/coeves.r
=========
803: Thu Feb 3 15:57:04 EST 1983
Add int=T/F flag to hat function to make it like regress.
 ----------
Solution:  Tue Dec 13 11:54:39 EST 1983
See 890.
=========
790: Thu Dec 16 05:24:48 EST 1982
Add miss= arg to lines, and arrange for it to call dlinez for broken lines.
 ----------
Solution:  Tue Dec 13 12:00:46 EST 1983
See 855 for better answer.
=========
543: Mon Apr 27 18:09:03 EDT 1981
mdscale still doesn't get its output right. The recovered distances don't
look at all like the original. Not multiplying in the eigenvalues right?
 ----------
Solution:  Tue Dec 13 12:19:16 EST 1983
Now have cmdscale.
=========
452: Mon Jan 12 12:xx EST 1981
Add argument cycle= to pmax, pmin to turn of cycling of short args.
----------
Solution:  Tue Dec 13 12:22:02 EST 1983
Bad idea.
=========
84: Nov 19
QQGAMMA should estimate eta if not given.
----------
Solution:  Tue Dec 13 14:20:22 EST 1983
solved by killing the qqgamma function
=========
896: Wed Dec 14 08:08:55 EST 1983
Have boxplot return vector of bar centers so that plots can be modified
later.
 ----------
Solution:  Wed Dec 14 08:09:29 EST 1983
Change $F/bxp/bxp.i to return the vector of centers.
=========
861: Sat Aug 6 10:55:49 EDT 1983
apply(saving.x,2,"stem") gives bad address, core dump after
printing the second stem.
 ----------
Solution:  Wed Dec 14 08:43:59 EST 1983
Functions returning NULL result (like stem) caused apply.i to never
set icurr after the call to asectn.  However, asectn allocates
space on its first call.  Hence apply was releasing asectn's space
and it got overwritten.
Change $F/apply/apply.i
=========
836: Tue Jun 7 11:12:36 EDT 1983
Have ztextz print out the string that was out of bounds as well as
the coordinates.
Should strings be clipped character by character or by the entire string?
 ----------
Solution:  Wed Dec 14 08:56:22 EST 1983
Create ztobdz to print text out of bounds messages.
=========
713: Tue May 25 16:35:37 EDT 1982
Problem with read:  input of
1.5 NA. 3.
gives no error message, but does produce a 0.0 after the NA.
 ----------
Solution:  Thu Dec 15 17:46:08 EST 1983
General fix to read, modifying uread.C and rderr.r
=========
883: Mon Nov 21 06:14:52 EST 1983
read("xxx",mode=CHAR) gives core dump if the file has more than
2000 items; specifying len=5000 works if there are fewer than 5000
items.  Sounds like problem in growing the result data structure.
Also, read() when given 1 2 x 4 gives 
Error in reading data: string longer than 146931712 characters.
 ----------
Solution:  Thu Dec 15 17:50:35 EST 1983
See solution to 713
=========
770: Thu Nov 4 12:43:23 EST 1982
read() when given "15.5" "abc" dies because it interprets 15.5 numerically
even though it has quotes around it.  It then gets the glorious message
"string longer than 146931712 characters;
Attempting to read item 2.
 ----------
Solution:  Thu Dec 15 17:51:58 EST 1983
See solution to 713
=========
763: Sun Oct 24 18:08:51 EDT 1982
read() given input
no yes
dies because it things no is NA and gets messed up with the next field.
read(mode=CHAR) does work,however.
 ----------
Solution:  Thu Dec 15 17:53:05 EST 1983
See solution to 713
=========
759: Tue Oct 12 15:13:50 EDT 1982
read() accepts input like
44abc 7 13
as if it were 44 7 13 -- no error message for the "abc"
 ----------
Solution:  Thu Dec 15 17:53:57 EST 1983
See solution to 713
=========
735: Fri Aug 6 09:50:28 EDT 1982
The read function, when it encounters the input
1 44-45 46
reads 3 things with no error messages: 1 44 and 46.
It should flag the embedded minus as an error.
 ----------
Solution:  Thu Dec 15 17:54:27 EST 1983
See solution to 713
=========
826: Wed May 11 09:40:27 EDT 1983
plot(1:10,1:10,xaxs="i") generates an extended internal axis -- the user coords
are extended beyond 1:10, although labels are at 2,4,6,8,10.
 ----------
Solution:  Thu Jan 5 08:05:09 EST 1984
Couldn't recreate the situation on the hp2623 driver.
=========
798: Fri Jan 21 09:54:12 EST 1983
1431943e4 is printed that way, rather than in standard e-notation
as 1.431943e10
 ----------
Solution:  Thu Jan 5 11:30:04 EST 1984
Problem was rdtfmt picking a huge f-format rather than the more reasonable
e-format.  $P/encf00 then found it couldn't create an integer
large enough for the stuff before the decimal, and it produced
the strange format e-number.
Fixed $P/rdtfmt.r
=========
665: Tue Jan 26 10:17:17 EST 1982
Function rdtfmt is stupid about the width of e format numbers -- always
thinks the x.E+0x type stuff takes an extra 6 chars, and thus causes
f format to be picked even when e would be better, e.g. 1e-6 vs .000001.
Also, $P/stems.r uses width arg incorrectly--it should be set to -1 before call.
Used in $GRZ/vaxisz.r, $P/encr00.r $S/dtafmt.r.
----------
Solution:  Thu Jan 5 11:31:35 EST 1984
$P/rdtfmt.r is much smarter about which format it chooses.
=========
862: Mon Aug 8 13:11:41 EDT 1983
plot(c(6,10000),c(6,10000),log="xy") doesn't label tick at 5.
Problem in laxisz.
 ----------
Solution:  Fri Jan 6 07:23:10 EST 1984
Change $GRZ/laxisz to fix bug in axis that starts in the middle of
a set of ticks (1 2 3 ... 9) or (1 5).
=========
837: Tue Jun 7 15:02:29 EDT 1983
Problem with axis function.
	plot(1/1:10,axes=F); axis(2,at=1/1:10,lab=1:10)
doesn't label beyond first tick; however
	axis(2,at=1/10:1,lab=10:1) does. 
Perhaps "at" values have to be in ascending order?
 ----------
Solution:  Fri Jan 6 07:24:13 EST 1984
Modify $F/axis/axis.i to sort the at values (and carry along any labels)
because vaxisz and vtickz believe that they are sorted.
=========
795: Tue Jan 18 10:01:08 EST 1983
Devices prism, photo, stare, comic are using $GRZ/../standalone/devdum.r
for ztextz, etc.  Unfortunately, ztextz() there does not set ncp parameter,
and thus potentially vaxisz gets confused about overlapping labels.
Also, this may happen any time running in batch (with the interactive
calls turned off) on any standard device.  Replots of batch tek14() for
example, may have problems.  Basically, the problems are most likely
on horizontally labelled y-axis, it appears.
 ----------
Solution:  Fri Jan 6 07:25:16 EST 1984
Modify $GRZ/vaxisz.r to set the ncp parameter prior to the character
string output so that if it isn't changed, it will ignore that measure
of how far the string advanced.
The code had always used the greater of .5 char ht or the actual moved distance;
this modification just makes it think the actual distance was zero.
=========
898: Wed Dec 14 17:21:36 EST 1983
Make $S/sgets.C more efficient, like $F/vu/sgets.C
 ----------
Solution:  Fri Jan 6 08:30:42 EST 1984
Sgets.c  from $F/vu moved to $S
=========
100: Nov 29
Should PRINT have facility for skipping lines?  McGill wants
PRINT() to cause line skip, but what about several?
How about skip=n arg that can appear anywhere (multiple times).
----------
Solution:  Fri Jan 6 11:56:28 EST 1984
print("",quote=F) skips
=========
179: Mon Mar 17 08:21:00 EST 1980
Print should have option of omitting "" for character data, so that characters
can be printed as symbolic matrices, etc.
print(c("X"," ")[NA(matr)+1])
would indicate with X's where data was.
Also take NA= flag to tell what string should be printed for NAs, e.g., NA=" ".
By the way, SKIP statements in print don't go to outfc.
----------
Solution:  Fri Jan 6 11:58:24 EST 1984
options(space=0); print(..., quote=F)
should do the trick.  For NAs, just coerce to CHAR, then replace
"NA" with whatever you want, and print with quote=F.
=========
201: Tue Apr 1 16:55:21 EST 1980
For completeness, the PRINT macros should accept substrings; e.g.,
SUBSTR(text,start,length).
----------
Solution:  Fri Jan 6 12:03:02 EST 1984
Hardly worthwhile.
=========
312: Tue Aug 5 10:20:47 EDT 1980
Spacing of print of logical vectors seems odd. 1)three blanks
between items; 2)vectors with NA's shift the "N" 1 to the left.
3)Matrices of logicals misalign the column headings; e.g. matrix(T,8,30)
(found by mhuxh!2363wdj)
----------
Solution:  Fri Jan 6 12:06:26 EST 1984
$P/encv00.r wasn't passing the width parameter when encoding logicals.
=========
462: Mon Jan 19 14:52:58 EST 1981
mstrix doesn't handle its default collumn labels right.
Guess is that it doesn't plot column labels past NROW(x), rather than NCOL(x)
Evidence is that smatrix(votes.repub[state.region==2,])
only gets col. labels up to 15.
 ----------
Solution:  Fri Jan 6 12:11:35 EST 1984
Seems to work now.
=========
524: Tue Apr 7 12:35:01 EST 1981
The extract function gets sick if there are blank lines
on the end of a ".ext" file, complains about missing left paren.
Appears to read everything correctly, though.
Also, blank lines on a .des file cause repetition of preceeding field.
Should the ?extract macro have default print=T to give
user idea of what was actually read?
 ----------
Solution:  Fri Jan 6 12:17:48 EST 1984
Now get warnings if blank lines in .des file.
Default is print=T in ?extract.
Restore function doesn't complain about trailing empty lines.
=========
614: Thu Aug 20 10:50:18 EDT 1981
Doc for FUNCTION implies that it is not necessary to mention the
.i file on the command line.  Change doc or fix FUNCTION to add
the .i if not supplied by user.
 ----------
Solution:  Fri Jan 6 12:22:27 EST 1984
Change $HELP/CHAPTER.
=========
793: Wed Jan 12 14:36:21 EST 1983
regress(1:2,1:2) gets floating exception in regprt and regsum -- possibly
because df == 0 in computing resid std err.
Divide by zero in $P/regsum.r.
 ----------
Solution:  Mon Jan 9 08:08:20 EST 1984
Fixed - prints warning message.
=========
804: Thu Feb 17 10:27:22 EST 1983
The following input data causes read to complain after reading the
first three numbers.
 0.,  4.707176785089,  6.941640377571,  3.937884259606,  12.30010332803,  11.04352704706,  10.07962499058,  0.,  1.783495676232,
Also, read(mode=REAL) dies after the initial 0.
All is well if the commas are removed.
 ----------
Solution:  Mon Jan 9 09:00:12 EST 1984
Now reads as character if mode=REAL is not given, otherwise
prints error message after reading item 1.
=========
850: Thu Jul 7 08:48:09 EDT 1983
$I/u/signal.m includes JMP_LEN constant as 10 longs (incorrectly, too);
However, on different architectures, this may very well be different!!!
Now in $I/u/mach.m; however only used in $M/inlink.C, which could
use sizeof(jmp_buf)/sizeof(int) to compute correct length.
 ----------
Solution:  Mon Jan 9 09:01:20 EST 1984
Changed $M/inlink.C to use sizeof() stuff; removed JMP_LEN from $I/u/mach.m
=========
290: Mon Jun 30 09:02:34 EDT 1980
Screwy axis generated by plot(c(-.011,.004))! Also 1e-9,.00002
Seems to be missing one needed digit of precision.
It may be the result of the label length parameter.
----------
Solution:  Mon Jan 9 12:21:39 EST 1984
Change $GRZ/defltz.r to set label length to 7.
=========
901: Thu Jan 5 08:13:17 EST 1984
Link should flush system common blocks prior to calling
external functions, since, e.g., options() in the executive
may reset internal versions of the common but not flush them.
Alternative: have anything that sets common flush them to stack file.
Affects attach, chapter, detach, options, prefix, sys.boot
 ----------
Solution:  Mon Jan 9 12:54:04 EST 1984
Done by calling cmnctl in each of these functions just prior to return.
=========
851: Thu Jul 7 08:53:05 EDT 1983
It would be nice if we could make sys.boot an internal function.
How about looking into it.  It could always be internal for that matter,
just like sink, etc.
 ----------
Solution:  Mon Jan 9 13:26:57 EST 1984
Change $F/sys.boot/Smakefile, boot.r, $M/npinit.C loader.C
to make it work.
=========
473: Thu Feb 5 10:26:17 EST 1981
Arrange for segments function to allow different x and y
lengths and replicate shorter ones.  Useful for drawing
ladders, etc.
 ----------
Solution:  Mon Jan 9 14:24:35 EST 1984
Change $F/segments/segmen.i arrows.r, Smakefile.
Get rid of segments.r.
=========
904: Mon Jan 9 08:29:01 EST 1984
lines(0,1) doesn't give error message; doesn't do anything.
 ----------
Solution:  Thu Jan 12 08:30:51 EST 1984
Although it seems strange, the same condition can come up
with NAs in the x,y args.
=========
905: Fri Jan 13 22:57:09 EST 1984
x <- cstr(Data=1:5,) creates a structure 
("" S "x" 10 2
 ("Data" I 1 1 )
 ( "" * 0 )
)
but x doesn't print by itself.
 ----------
Solution:  Mon Jan 16 12:07:14 EST 1984
change $S/prtvec to print Data component if Dim or Tsp not present.
=========
906: Mon Jan 16 12:15:26 EST 1984
Make random number generators take runif(x) to be runif(len(x))
if length of x is > 1
 ----------
Solution:  Mon Jan 16 12:16:35 EST 1984
Change $F/rnorm/ranfun.i
=========
903: Fri Jan 6 08:18:23 EST 1984
If y is a character vector, y[1]<-NA causes core dump.
 ----------
Solution:  Mon Jan 16 12:20:50 EST 1984
An earlier change in coeves makes it check that
(in this case) NA which is an INT cannot be changed to CHAR.
Gives nice error message.
=========
910: Wed Feb 1 10:03:25 EST 1984
If S is run as pure procedure, ptline cannot even temporarily overwrite
the input string, since the entire area may be memory protected.
 ----------
Solution:  Wed Feb 1 11:18:04 EST 1984
Revised $P/ptline.C
=========
908: Wed Jan 25 15:45:45 EST 1984
on system V, sscanf gets out as soon as the first conflict comes up.
This messes up our code in $P/uread.C (anyfld) that tries to figure
out the mode of input data.
 ----------
Solution:  Thu Feb 2 07:04:54 EST 1984
Change to use "^A" as the end-of-conversion character.
=========
825: Wed May 11 08:43:27 EDT 1983
Add speed= arg to hpgl driver.
 ----------
Solution:  Wed Feb 15 09:41:35 EST 1984
Done in $F/hpgl and $F/hpglv
=========
914: Thu Feb 16 11:26:32 EST 1984
arrows gets a floating point exception.
 ----------
Solution:  Thu Feb 16 11:27:31 EST 1984
A QUERY statement was missing from $F/segments/arrows.r
=========
926: Tue Apr 24 08:28:57 EST 1984
Revise makefiles for device drivers to 
1) avoid creating the device driver libraries (use object files instead)
This will get around ld -r problems
2) not make standalone device drivers by default -- for most installations
they are just clutter.
 ----------
Solution:  Tue Apr 24 08:32:04 EST 1984
Changed all $F/xxx/Smakefiles to do this
=========
924: Thu Apr 12 17:50:10 EST 1984
menu("abc","def") causes bad address and S termination.
(This is because xmktmp was not declared POINTER)
Now, m<- menu("abc","def") returns NULL as the value of m, rather than 1.
 ----------
Solution:  Tue Apr 24 08:33:36 EST 1984
Declare xmktmp POINTER in $F/menu/menu.i
=========
890: Tue Dec 6 12:31:02 EST 1983
add int=T/F argument to hat function
Default T.
 ----------
Solution:  Tue May 8 07:10:50 EDT 1984
Done.
=========
928: Tue May 1 15:24:10 EDT 1984
The following code dies:
x <- seq(100)
for(i in x) print(i)

However, for(i in seq(100)) print(i) 
works fine.  The problem is that funev pops the stack whenever
an internal function is executed.  for(i in x) invokes the newblt()
function giving it as one of its arguments a DATASET entry named "x".
$M/gtinst is called by infun when trying to evaluate newblt, and it is
the routine that actually reads the dataset.  newblt puts the pointer
to the data on the stack, but when it returns, funev pops the stack
and the space that once contained the dataset is now free to be overwritten
by anything else that wants it.  If the expression in the
for() is a computed expression rather than a dataset name, the
expression is already on the stack, and hence it is not bothered by
the freeing operation.
 ----------
Solution:  Wed May 30 08:40:30 EDT 1984
Change $M/funev.r and reload executive.
=========
887: Wed Nov 30 07:17:42 EST 1983
alice!cew

If, using identify with the blit driver, you hit button 1 before the
identify starts (in the graphics window that is) and do not flash
button one in the text window before the identify starts (i.e. you have
selected the graphics window and then identify is invoked), the
terminal hangs.  This happens to me when the machine is slow and I
cannot tell exactly when the identify starts.  One aid would be to have
identify ring the bell when it started.  Better yet would be to keep it
from hanging.
 ----------
Solution:  Mon Jun 11 08:35:44 EDT 1984
Change $F/blit/graphics.c (and $F/tty5620) to wait(MOUSE)
prior to doing the query.   It also rings the bell to notify the
user that input is expected.
=========
186: Tue Mar 18 14:29:19 EST 1980
The function dim(x) would give the dimension
vector for x, and work even when x is a vector. Extracting the
component x$Dim is less general.
----------
Solution:  Wed Jun 27 08:13:32 EDT 1984
Create dim function in $F/dim
=========
192: Tue Mar 25 11:06:32 EST 1980
Should create `dataset' function to allow macros to determine
if datasets exist and allow conditional action.
----------
Solution:  Wed Jun 27 08:14:55 EDT 1984
dataset function created
=========
147: Wed Feb 27 10:54:44 EST 1980
There should be a parameter query function to extract garphic par'S:
 query("cex","mex") returns structure with components `cex',`mex'.
Then `par' should recognize such a structure as an argument
(by using argstr, e.g.) to allow restoring parameter values.
----------
Solution:  Wed Jun 27 08:15:33 EDT 1984
query function created; par modified to accept structures
created by query.
=========
344: Wed Sep 10 06:12:56 EDT 1980
Create quantile(x,p) function to get the pth quantiles from dataset x.
Could use psort.
----------
Solution:  Wed Jun 27 08:16:15 EDT 1984
Done.  also returns 5-number summary by default.
=========
834: Mon Jun 6 09:40:16 EDT 1983
Create xysort function using ideas from Jon Bentley's paper on optimizing
plotter time.
Used with point plotting:  plot(xysort(x,y))
 ----------
Solution:  Wed Jun 27 08:16:56 EDT 1984
xysort created.
=========
880: Sat Nov 5 09:48:30 EST 1983
Create a function that will round numbers to a specified number of
significant digits,  signif(123456,3) produces 123000, etc.
 ----------
Solution:  Wed Jun 27 08:17:20 EDT 1984
Function signif created.
=========
775: Wed Nov 17 09:46:26 EST 1982
Should we have a density-function for various distributions, for example
dnorm() returns c*exp(-x^2/2), etc.  Could be used to superimpose densities
based on estimated parameters on empirical density fits, etc.
 ----------
Solution:  Wed Jun 27 08:17:46 EDT 1984
Done.  Densities for all functions in $F/rnorm
=========
939: Fri Jul 6 12:46:20 EDT 1984
A call to the ls() function inside a loop with the large executive
eventually caused overflow of number of open files.
Problem was that esstep.C (in $F/list) didn't close the
directory that it opened for reading.
 ----------
Solution:  Fri Jul 6 12:48:31 EDT 1984
Close the directory.
=========
942: Fri Aug 31 17:04:20 EDT 1984
A small bug has lurked in qtdis.r for years.  It was pointed out
by D. Swayne and has been quashed
 ----------
Solution:  Fri Aug 31 17:12:35 EDT 1984
Change  $P/qtdis.r
=========
946: Mon Nov 5 07:59:59 EST 1984
S REPORT deletes quotes (") from text as well as from the
output of S expressions.  It makes things like this difficult:
The result of help("stem") is {help("stem")}
 ----------
Solution:  Mon Nov 5 08:40:11 EST 1984
change $SHOME/src/util/reportout.c
=========
947: Mon Nov 5 11:20:04 EST 1984
regsum documentation problems:
1) component `table' not mentioned in doc
2) component `ynames' not produced by default
3) component `stdcov' not documented
 ----------
Solution:  Mon Nov 5 11:21:50 EST 1984
Change $F/regsum/regsum.i to produce ynames unconditionally;
stdcov documented
table is vestigial and will not be documented
=========
934: Wed May 16 07:34:43 EDT 1984
Add hp150 device.
(Already added to $F/hp2648; fix up touch screen code, add to documentation)
 ----------
Solution:  Wed Nov 14 07:53:50 EST 1984
Done (although it is hard to test without an terminal present).
=========
923: Thu Apr 12 13:05:00 EST 1984
nproc doesn't seem to work any more -- if you execute nproc(1) on a small
executive system, it doesn't kill the outstanding processes.
It used to call killem.
 ----------
Solution:  Wed Nov 14 08:32:42 EST 1984
Added missing common declaration to $F/nproc/nproc.i
=========
919: Tue Mar 27 08:42:03 EST 1984
From penelope!kcl Thu Mar 22 11:51:30 1984
Subject: S time series commands

1.  Under certain arcane conditions, the tsmatrix() function
misbehaves.  The simplest example I have found is illustrated by
the command sequence:

	A <- ts(1:53,start=1970,nper=53)
	B <- tsmatrix(A,A)
	len(A)
	B$Dim
	start(B)
	end(B)

What happens is that the last row of data is chopped off, and the
dimensions of the matrix (but not the time series parameters)
adjusted accordingly.  A similar thing occurs when nper=53 and
the length of A is 682;  I'm sure there are other cases.

2. A second problem arises when window() is applied to a tsmatrix.
The following sequence of commands will illustrate:

	A <- ts(1:10,start=1970,nper=4)
	B <- ts(11:20,start=1970,nper=4)
	C <- tsmatrix(A,B)
	D <- window(C,end=c(1971,4))
	D$Dim
	D$Tsp
	D$Data

I know that window() is not advertised to work here.  The problem is
that no objection is made, and that the result is inconsistent.
Either the command should be invalid with this argument, or it 
should work.

3. Another problem is that NA gets translated to 0 when a tsmatrix is
formed.  The following command sequence shows this:

	A <- ts(rep(NA,10),start=1970,nper=4)
	B <- tsmatrix(A,A)
	A
	B

I cannot think of any instance where this silent conversion is
desirable.

4. Another problem, not quite so serious, is in printing of time series
data.  The input

	A <- ts(1001:1027,start=1970,nper=13)
	A

yields

	Time-series:
		   1     2     3     4     5     6
	 1970   1001  1002  1003  1004  1005  1006
	 1971   1014  1015  1016  1017  1018  1019
	 1972   1027
	
		   7     8     9    10    11    12
	 1970   1007  1008  1009  1010  1011  1012
	 1971   1020  1021  1022  1023  1024  1025
	 1972
	
		  13     1     2     3     4     5
	 1970   1013  1014  1015  1016  1017  1018
	 1971   1026  1027
	 1972
	
The wrap-around at the end can be quite misleading.
Ken Laitinen (penelope!kcl)
 ----------
Solution:  Wed Nov 14 10:20:19 EST 1984
Changed $F/window/window.i to do the right thing with tsmatrices;
also change $F/tsmatrix/tsmatrix.i to use pcopy to avoid
NA loss and to use a different tolerance so that the problem
counting the number of results is cured.
The last problem (print wrap-around) is still unsolved.
=========
894: Mon Dec 12 14:05:02 EST 1983
?abc(7.data) gets error because 7.data is interpreted as
a double-precision constant.
 ----------
Solution:  Thu Dec 13 06:23:18 EST 1984
Same as 805 (not solved yet).
=========
852: Thu Jul 7 14:49:01 EDT 1983
ranset no longer works (since $P/uni.c was installed).
 ----------
Solution:  Thu Dec 13 06:47:30 EST 1984
Modified to work once again.
=========
871: Tue Aug 30 17:27:53 EDT 1983
Alter the menu and source functions to take argument
return=T/F
to tell whether they are to invoke a source file and return
or whether they are to pop out of their current diversion
prior to invoking the new source file.  This prevents
unwanted nesting of source files when the end of each one
invokes menu to do something new.
What about macros at the very end of a source file??
 ----------
Solution:  Thu Dec 13 06:49:06 EST 1984
Done.  Especially useful for the S demo.
=========
917: Fri Mar 16 06:18:03 EST 1984
?col(x) (the user forgot ?col(x,mean)) causes S to terminate
System error: cannot execute
 ----------
Solution:  Thu Dec 13 07:32:26 EST 1984
Modify $M/loader.C to die gracefully on failure to exec.
=========
878: Fri Oct 28 06:28:29 EDT 1983
A fake user function created by
  touch x/junk
  chmod +x x/junk
  S
  chapter
  junk(1)
causes the executive to die with
   System error: cannot execute
 ----------
Solution:  Thu Dec 13 07:33:46 EST 1984
See 917
=========
557: Fri May 15 07:49:02 EDT 1981
Extend the pattern matching in ls by means of regular expression
code given in software tools. (or regex(3))
Also, could create a function matching(pattern,table)
that would return a logical vector teling whether the table items matched
the pattern.
 ----------
Solution:  Tue Dec 18 06:57:23 EST 1984
Change the ls function to actually use the UNIX ls command
with its output piped to S to turn the result into a character
vector.  Now uses full UNIX pattern match facilities.
=========
956: Mon Feb 18 10:29:18 EST 1985
S REPORT breaks on 8th edition machines -- doesn't have
the correct S output in the output file.
 ----------
Solution:  Mon Feb 18 10:31:45 EST 1985
Change $P/ptline.C to avoid writing 0-length records to the stdout.
When stdout was a pipe, the downstream process received
EOF from the 0-length write.
=========
963: Mon May 13 06:27:29 EDT 1985
Restore doesn't seem to know how to read a NULL dataset.
It gets an error when reading the result of dump:
  n <- NULL
  dump(list="n",file="junk")
  restore("junk")
 ----------
Solution:  Wed May 15 14:49:17 EDT 1985
Change $F/dget/strget.r (and $S/dget.r) to read the length field and following paren
for NULL datasets.
=========
968: Tue Jun 18 15:47:02 EDT 1985
par(usr=c(0,1,0,1)) gets problem in zscalz if executed without
a device driver present rather than getting the expected
"Device driver not active" message.
 ----------
Solution:  Tue Jun 18 15:47:57 EDT 1985
Change $GRZ/../indsource/ind.C to use a cast in situations like:
  i = pread(...)
  if(i < 200*sizeof(float)) ...
the sizeof is treated as unsigned and when i is -1 as it is from
an error in read, the comparison treats i as larger than 200*sizeof(float).
Also change $S/rdinstr.C
=========
967: Tue Jun 18 15:46:30 EDT 1985
spline(1:6,c(1:5,1)) terminates with memory allocation error.
 ----------
Solution:  Thu Jun 20 12:53:10 EDT 1985
Lots of problems existed with spline.  Basically, the underlying algorithm
did NOT guarantee to produce only n output points.  In fact, it produced
at least as many output points as input points and could have quite
a few more than requested.  Changed $F/spline/spline.[ic] to communicated
the number of output points and also revised documentation.
=========
957: Thu Feb 21 06:30:46 EST 1985
The following sequence
plot(1)
show
points(.8)
show  # everything ok here
plot(1)
show
points(.8)
show  # problem: only shows the point, not the original plot
 ----------
Solution:  Mon Jun 24 08:16:32 EDT 1985
$F/show/show.i sets am(127) to 1 to indicate to the device driver
that the following call to zejecz should merely dump its buffer,
not clear it.  On the first time, everything was fine.  The second
time, amdiff (called from ind.C in the executive) thought that
am(127) was already 1 and didn't bother to send it over to the
device driver.  The device driver thus cleared the buffer.
The fix was to add the line am(127)=0 to $F/show/show.i
=========
931: Mon May 14 15:48:49 EDT 1984
if(T) { fatal("Die"); print("should not get here") }
prints
Fatal Error: Die
   "should not get here"
 ----------
Solution:  Mon Jun 24 08:23:41 EDT 1985
Seems to work now.
=========
645: Mon Nov 9 15:46:37 EST 1981
len(seq(0,1,len=256)) yields 255.  Apparent rounding problem.
 ----------
Solution:  Mon Jun 24 09:30:58 EDT 1985
New seq.i fixes.
=========
938: Wed Jun 6 06:56:19 EDT 1984
for(i in 1:5) print(rcauchy(1))
prints the first time and thereafter gives
"Warning: missing values generated in qcauchy from data points out of bounds"
 ----------
Solution:  Mon Jun 24 09:35:51 EDT 1985
Change $F/rnorm/rnorm.i to not overwrite the FNAME field of its instr.
What happened was that the overwritten name caused the second and subsequent
iterations of the loop to directly call qcauchy rather than rcauchy.
Solved by generating a new name on the stack.
=========
720: Wed Jun 2 12:37:38 EDT 1982
Printer plots interact in a funny way with defer(ask=T).
If the user uses "show", he is asked the "Save last frame?"
message each time it is used, prior to it being shown.
This inhibits the use of printer in the
plot
show
abline...
show
title
# now I want it saved
mode of operation.
 ----------
Solution:  Mon Jun 24 10:56:37 EDT 1985
$GRZ/../indsource/defer.r changed to do nothing if wejecz is called
when am(127) is > 1 (this indicates that zejecz is only going to print
a copy of its buffer but is not going to clear the buffer.  invoked by the
show() function).
=========
969: Mon Jun 24 12:29:57 EDT 1985
The rm function doesn't allow simultaneous removal of list= argument
and other arguments.  It should.
 ----------
Solution:  Mon Jun 24 12:30:44 EDT 1985
Change $F/rm/rm.i to allow.
=========
736: Wed Aug 11 09:37:20 EDT 1982
Floating exception in hist
hist(rep(1e5,3))
Probably in computing number of bins.
 ----------
Solution:  Mon Jun 24 12:44:53 EDT 1985
change $GRZ/hhdonz.r to avoid divide by zero.
=========
940: Wed Aug 8 06:22:34 EDT 1984
c(1e20,0,1e-20) prints as
"1e20e0      1e-20" where there appears to be no space
before the 0e0 as well as no leading zero.
E format zeroes screw up in matrices, too.
 ----------
Solution:  Mon Jun 24 14:33:39 EDT 1985
Change $P/encf00.r to put out leading zero.
=========
490: Fri Feb 27 14:05:45 EST 1981
Fix up the hatch algorithm to avoid problems
when hatch lines hit directly at vertices.
 ----------
Solution:  Tue Jun 25 10:54:05 EDT 1985
Recent fix should take care of this.
=========
925: Thu Apr 19 05:42:19 EST 1984
Dump/restore (dget/dput) don't agree on how to put out
a NULL value.  Try nnn <- NULL; dput(nnn,"junk"); dget("junk")
Ends up with error in reading data: missing parenthesis;
attempting to read the first item.
 ----------
Solution:  Tue Jun 25 10:56:54 EDT 1985
Fixed.
=========
392: Mon Nov 3 07:01:51 EST 1980
Create polygon function, that takes x/y coords of polygon vertices
and draws it (like lines with point n connected to point 1).
Could take fill= argument, angle, lines per inch.  Replace hatch, polyfill.
 ----------
Solution:  Thu Jun 27 10:14:41 EDT 1985
New function polygon.  hatch moved out of big.list and medium.list
although neither hatch nor polyfill were zapped completely.
=========
961: Tue Apr 30 15:32:19 EDT 1985
Where is xor?  I can't find source code for it although there is an
entry in $HELP.
 ----------
Solution:  Thu Jun 27 10:15:45 EDT 1985
Recreated xor, although it is easy to do by hand
xor(x,y) is same as x+y==1
=========
448: Mon Jan 12 12:xx EST 1981
Make arguments for shade spaceing consistent between functions
hist and hatch (currently lines= and space=).
----------
Solution:  Thu Jun 27 11:13:53 EDT 1985
New function polygon is consistent.
=========
977: Thu Oct 10 07:24:28 EDT 1985
Create postscript driver.
 ----------
Solution:  Thu Oct 10 07:24:48 EDT 1985
Postscript driver from Doug Bates of U of Wisc
installed as function postscript.
Works very nicely with apple laserwriter.
=========
978: Wed Nov 13 09:41:47 EST 1985
seq(0,950400,3600) should give a vector of length 265
but instead gives an error message about Inconsistent values of
from to and by.
 ----------
Solution:  Thu Nov 14 09:24:22 EST 1985
Change $F/seq/seq.i to avoid overflow..
=========
980: Tue Nov 19 08:05:15 EST 1985
The method= argument of rreg has biweight in the code rather
than the documented value of bisquare.
 ----------
Solution:  Tue Nov 19 08:06:17 EST 1985
Change rreg.i to use bisquare.
=========
981: Mon Dec 2 13:14:19 EST 1985
dget has trouble reading a logical vector written by dput
that contains NAs.  For example, if a_runif(10); b_runif(10); a[4]_NA
dput(a>b,file="junk"), then dget("junk") gives
"Error in dget at level 1
Error in reading data: missing parenthesis;
Attempting to read item 11
The 4 previous values were:
S terminating: bad address"
 ----------
Solution:  Thu Dec 5 09:45:35 EST 1985
Changed $P/uread.C $P/ptrfld.r and $F/dget/strget.r.
The first two accommodate NAs in logical variables (prior to this
anything that wasn't "T" was interpreted as "F".
Strget was changed so that it printed the correct number of
previous values:  its message was always one too large, so that
"the 4 previous values were" should have been "the 3 previous values".
The termination could very well have been due to trying to print
4 values when only 3 had reasonable values.
=========
982: Wed Dec 18 11:50:54 EST 1985
The sequence
  read(len=1)
  1
  read(len=1)
  2
when put in a file and given as stdin to S stops after the first read.
Probably due to buffering in stdio in $P/uread.C
 ----------
Solution:  Wed Dec 18 13:05:33 EST 1985
Changed uread.C to not buffer stdin.
=========
984: Thu Mar 6 06:42:09 EST 1986
The function interp doesn't compute its default (length 40) output
grid values correctly.
 ----------
Solution:  Thu Mar 6 06:44:44 EST 1986
Changed $F/interp/interp.i
=========
983: Wed Jan 22 13:53:52 EST 1986
Should the message function (which is implemented by
fatal.i) write on OUTFC rather than stderr?
That way messages could be diverted to sink files.
 ----------
Solution:  Tue Apr 22 08:50:31 EST 1986
Done.
=========
970: Fri Jun 28 10:42:00 EDT 1985
Create a function that acts like the Unix file command:
given datasets, it describes them and knows about
categories, real, int char, matrix, array, time series, regn str, etc.
 ----------
Solution:  Tue Apr 22 11:47:33 EST 1986
Function whatis is now in the store.
=========
987: Wed Apr 23 12:00:59 EST 1986
Add auditing printout to diary file.
 ----------
Solution:  Wed Apr 23 12:32:53 EST 1986
Change putds and getds to print audit info to diary file.
Also change yylex to NOT ADD # to the front of lines
that came in from a source file or macro.
=========
955: Mon Feb 18 10:28:18 EST 1985
For aesthetics, when help cannot provide documentation, it probably
shouldn't print "Error in help".
 ----------
Solution:  Tue Apr 29 06:08:33 EDT 1986
Change $F/help/help.i
=========
988: Thu Apr 24 12:58:54 EST 1986
In scatmat, have the brush remain drawn on the screen when "Pause" is hit.
This will allow screen dumps to include the brush.
 ----------
Solution:  Tue Apr 29 07:39:45 EDT 1986
Change $F/blit/scatmat.c (a trivial change)
=========
986: Tue Apr 22 13:55:34 EST 1986
jbk pointed out a bug in zzicol.r -- call applrf(....,m,m)
should be (...,ndim,ndim).
No test data for checking it out, though.
 ----------
Solution:  Tue Apr 29 07:40:12 EDT 1986
change $P/zzicol.r
=========
972: Fri Aug 2 13:43:29 EDT 1985
The rep function should allow zero replications:
rep(1,0) should produce a NULL.
 ----------
Solution:  Thu May 8 15:45:39 EDT 1986
Change $F/rep/rep.i
=========
954: Wed Jan 23 07:22:27 EST 1985
Should entries like ESCAPE and TAB in $I/u/mach.m be made into
quoted strings there?  That would enable them to be defined in other
ways, e.g. define(`ESCAPE',char(92)),
that might make it easier to get them through certain fortran compilers.
 ----------
Solution:  Thu May 8 15:49:26 EDT 1986
Done.  Required changes to a number of routines and $I/u/mach.m.
Also moved TSTRING from stand.m to u/mach.m, since its definition
as $1//char(0) works most of the time but doesn't work when
TSTRING is used in data statements.
=========
885: Tue Nov 29 17:44:00 EST 1983
The function `menu' should take a head= argument to provide
some introductory header information (a line per data item in a char. vector)
to introduce the menu text.
 ----------
Solution:  Thu May 8 15:52:27 EDT 1986
Unnecessary since print("...",quote=F) will do the same thing
(or message("...."))
=========
109: Tue Feb 5 12:42:12 EST 1980
Would it be possible to have an "eval('...')" function that
returns a parse tree of its arg?
a) New version of rbuf that gets input from the function arg rather
than from terminal.
b) `steval' wasks tree with rescan=YES (I think).  It would be necessary
to have eval's result rescanned, and not set to mode RESULT.
This same mechanism could also implement DERIV("expr","var").
----------
Solution:  Thu May 8 15:53:16 EDT 1986
This is solved in a more general way in QPE.  Don't try to do it in S.
=========
429: Mon Dec 22 15:42:42 EST 1980
A funny occurrence: in plot(x,y) if there are NAs
in x that coincide with
extreme values of Y, the y axis will get set up
too large for the data that actually will be plotted.
 ----------
Solution:  Thu May 8 15:54:17 EDT 1986
Create $P/naxy.r and use it in $I/intf.m to simultaneously
compute ranges for x and y.
Also, take range computations out of $F/graphlib/logtrn.r.
=========
993: Thu May 29 10:48:14 EDT 1986
Get rid of our own special version of malloc.
 ----------
Solution:  Thu May 29 10:49:19 EDT 1986
Done -- no more malloc and $I/u/cinter.m and $M/savmfr and rstmfr 
changed to not refer to the routines savstk and rststk.
=========
855: Fri Jul 22 08:16:06 EDT 1983
Have type= arg allowed in points/lines.
 ----------
Solution:  Fri May 30 16:55:57 EDT 1986
Modify $F/lines/lines.i to have type= argument.
Also changed so that marks are done via points rather than explicit
calls to dmarkz.  Dmarkz is now called by zpntsz
=========
974: Thu Aug 15 12:15:32 EDT 1985
tapply should check that the index structure is the same size as
the data vector
 ----------
Solution:  Mon Jun 2 09:09:40 EDT 1986
Change $F/tapply/tapply.i
=========
521: Fri Apr 3 12:07:40 EST 1981
Should we have a graphical parameter to supress calls to zflshz?
It would be dangerous, but would also allow things like
fractal line drawing without lots of extraneous flushes.
Would also like to be able to access zseekz, zlinez, etc.
 ----------
Solution:  Mon Jun 2 09:20:03 EDT 1986
Better done via zhookz, I think.
=========
663: Tue Jan 19 13:54:12 EST 1982
Fix up plots so that mark= arg accepted to use dmarkz rather than points.
 ----------
Solution:  Mon Jun 2 09:20:50 EDT 1986
Changed so that pch from 0 to 31 generates a mark.
=========
666: Tue Jan 26 10:22:52 EST 1982
Allow options(dump=0) to cause dumping of every expression?  How would
you ever edit a previously dumped expr--the "edit" cmd would be dumped.
Better to save a history list of previous exprs, like csh.
 ----------
Solution:  Mon Jun 2 09:21:24 EDT 1986
Better to use mandatory diary (or .Audit file like QPE).
That way, the expressions are always around to be edited.
=========
791: Thu Dec 16 07:58:02 EST 1982
Modify $B/sumclc.r for better efficiency in the case of any and all --
exit on first TRUE for any, on first FALSE or NA for all.
 ----------
Solution:  Mon Jun 2 09:22:16 EDT 1986
It's not worth the effort, since the computations are linear
(order n) anyway.
=========
935: Fri May 18 11:50:55 EDT 1984
code doesn't bother to check that the number of labels matches
the number of levels it was given: thus
code(1:10,1:10,"abc") produces a ridiculous category.
cut(1:10,10,"abc") also has the problem
 ----------
Solution:  Mon Jun 2 10:39:51 EDT 1986
Change $F/code/code.i $F/cut/cut.i to add error check
=========
418: Mon Dec 8 14:33:57 EST 1980
Add capability for box to draw box around figure rather than plot.
Allow filled box for background.  Also, make sure that parameter new
is not set FALSE by the action, so that this can precede plotting.
Also, allow drawing of rectangle (or is symbols sufficient?).
Perhaps filled rectangle to get easy background color setting, etc.
 ----------
Solution:  Wed Jun 4 09:52:10 EDT 1986
Need for this hasn't come up very much.  It is easy enough to do as
a macro using query() polygon() and par(new=T).
=========
994: Wed Jun 4 09:05:33 EDT 1986
Add new filled symbols to dmarkz.
 ----------
Solution:  Wed Jun 4 09:53:53 EDT 1986
Changed $GRZ/dmarkz.r to create filled symbols.
=========
729: Fri Jul 16 10:20:52 EDT 1982
There should be a mark to generate a solid-filled circle (octagon?),
filling based on raster size, pen width, and the desired mark size.
 ----------
Solution:  Wed Jun 4 09:55:44 EDT 1986
Changed dmarkz to use polyz to generate filled marks.
I don't know if there should be pen width considerations in this kind
of code -- better to implement polyz in the device driver and let
the device do what it can.
=========
445: Mon Jan 12 12:xx EST 1981
Fix up symbols to take NAs, make its args more compatible with
stars (allow radius=, etc). Also allow replication of short x,y,radius, etc.
----------
Solution:  Wed Jun 4 16:32:00 EDT 1986
Allows NAs.  No replication (cbind does it for you when you make up
the matrix of parameters).
=========
610: Wed Aug 12 15:29:01 EDT 1981
symbols(x,y,cir=r,add=T) seems to take r as inches, not
scale the max r to be one inch.
 ----------
Solution:  Wed Jun 4 16:32:59 EDT 1986
Changed to make max r be 1 inch.
=========
828: Fri May 20 14:10:50 EDT 1983
symbols() gives ellipses when used with axs="r".
 ----------
Solution:  Wed Jun 4 16:33:30 EDT 1986
Doesn't appear to do that now.
=========
975: Tue Aug 20 10:33:19 EDT 1985
The symbols function doesn't do what is documented.
Try the command on pg 28 of the book -- the scaling
is wrong and needs adjustment so that the maximum is 1.
 ----------
Solution:  Wed Jun 4 16:33:59 EDT 1986
Code fixed.  Also added thermometer and boxplot symbol types to symbols.
=========
960: Fri Mar 29 09:52:51 EST 1985
Why does denial of memory cause S to terminate rather than to FATAL?
It is a pretty ugly way to die when using a large executive.
It may have been an ok strategy when the memory allocation
requests were isolated in separate processes.
 ----------
Solution:  Thu Jun 5 09:10:06 EDT 1986
Changed $P/chpget.C to use FATAL rather than TERMINAL when memory
request is denied.  Also, better error message that gives
the amount requested.
=========
990: Thu Apr 24 14:05:09 EST 1986
From pru:
breakpoints in hist and cut are defined differently.
In hist, breaks are <, in cut, <=.
 ----------
Solution:  Thu Jun 5 13:23:57 EDT 1986
Changed $GRZ/hhcntz.r and hhbrkz.r to redefine so that breaks are <=
as in cut.
Note that the histogram break rule was never really documented, so
the change shouldn't bother anything.
=========
951: Tue Jan 8 11:00:11 EST 1985
The current code for laxisz does not insist on all tick marks
sharing a common format, hence axes may end up 1 10 100 1000 1e5 1e6
Should laxisz be changed?  Otherwise, it is hard to create a
nice looking log axis.
 ----------
Solution:  Thu Jun 5 15:45:25 EDT 1986
Changed $GRZ/laxisz.r to use common format.
=========
943: Mon Sep 24 15:27:26 EDT 1984
Should write function allow append to file?
 ----------
Solution:  Thu Jun 5 15:45:49 EDT 1986
Add "append=" argument to $F/write/write.i $HELP/write
=========
783: Wed Dec 8 07:14:52 EST 1982
Add anova table to regress/regprt.  Also, fix t-stats to 2 or 3 decimals,
r^2 to 3 or 4.  Generally clean up the printout -- it has long lines.
 ----------
Solution:  Fri Jun 6 09:58:10 EDT 1986
Change $F/regprt/regprt.i and $F/reg/reg.i to add new
correlation= argument to control printing of cor/cov matrices.
Also change regprt output to use shorter lines (only one item per line)
T stats done to 2 decimals.
=========
858: Tue Aug 2 10:01:29 EDT 1983
Symbols should die if there are negative values in the parameter array,
because it scales the axes and side length/radius etc. multiplicatively
so that the largest parameter is one unit.  This leaves the smallest
negative.
 ----------
Solution:  Fri Jun 6 10:26:16 EDT 1986
Check in $F/symbols/symbols.i
=========
973: Wed Aug 7 15:16:14 EDT 1985
If user has a weird path with his own sh, cd, or ls, the ls function
can have troubles because of trying to execute sh,cd, and ls.
 ----------
Solution:  Mon Jun 9 13:20:42 EDT 1986
Changed $F/list/nxtnam.C to use /bin/sh and /bin/ls
=========
1003: Fri Dec 5 10:00:06 EST 1986
Change the way EDITOR is invoked:  make sure S script defines the
EDITOR variable and then mprint/medit.i and edit/edit.i just invoke
it rather than invoking S editor.
Change $A/SETUP.S, to make sure newly-generated S script has
EDITOR defined.
This was the suggestion of Ritei Shibata
 ----------
Solution:  Fri Dec 5 10:14:45 EST 1986
Done.
=========
1005: Tue Dec 30 09:27:38 EST 1986
?fmin has incorrect values of its termination reason because
the imem[4] component of the state is currently 0,1,2 rather than 1,2,3.
That could also lead to unwanted iterations, because setting
the halt condition to 0 effectively keeps the iteration going.
 ----------
Solution:  Tue Dec 30 09:29:09 EST 1986
Change $F/optiter/optinit.i and optlp.r to 1) initialize the imem[4] halt value
to zero and 2) return 1,2,3 for actual halt.
=========
979: Wed Nov 13 15:47:35 EST 1985
Reported that legend doesn't accommodate mark=0.
legend(mark=1:4,col=1:4) produces boxes of color rather than colored marks.
 ----------
Solution:  Wed Feb 4 12:37:44 EST 1987
should be fixed by jms new changes to legend
=========
962: Tue Apr 30 15:32:54 EDT 1985
Legend is pretty dumb in drawing its box -- it doesn't take into account
how long the character labels are and thus it may stomp on long labels.
Also, the division between colored box, line, etc is fixed, so when you
lengthen the box to accommodate labels, the marks get bigger too.
Also, legend should allow not drawing the surrounding box and perhaps
should let you blank out the underlying area prior to drawing
(easy with color 0 on a raster device).
 ----------
Solution:  Wed Feb 4 12:38:16 EST 1987
new jms version of legend fixes most of this
=========
952: Fri Jan 18 08:41:31 EST 1985
Legend doesn't work right on a logarithmic axis (it should look for
log axis type and transform its x/y arguments).
 ----------
Solution:  Wed Feb 4 12:39:02 EST 1987
fixed by jms
=========
897: Wed Dec 14 08:13:59 EST 1983
Problem with legend: how do you get a legend showing colored lines/points?
If you specify col, you get filled boxes.
 ----------
Solution:  Wed Feb 4 12:41:28 EST 1987
solved by jms
=========
1007: Wed Feb 11 13:56:01 EST 1987
Diane Lambert reports that the range= argument for boxplot
is not used in finding outliers, although it is used in positioning
whiskers.
 ----------
Solution:  Wed Feb 11 14:46:04 EST 1987
It's ok.  Nevermind.
=========
1002: Tue Oct 14 13:00:10 EDT 1986
The revisions= argument to sabl appears broken.
sabl(hstart,revisions=T) does not produce a revisions component
in the output structure.
 ----------
Solution:  Tue Mar 31 08:26:52 EST 1987
Terpenning's new sabl modifications fix this and more.
=========
1013: Tue Jun 2 15:10:34 EDT 1987
stamp() does not work right onto diary file.
 ----------
Solution:  Tue Jun 2 15:11:03 EDT 1987
Ritei Shibata sent in bug and fix -- change $F/stamp/stamp.i to set name before printing to diary.
=========
1017: Tue Jun 23 09:00:53 EDT 1987
shibata points out that sapply with max= argument passes
an extra arg to the sapplied function.  For example:
s_split(1:10,1:3); sapply(s,"print",max=100)
 ----------
Solution:  Tue Jun 23 09:02:06 EDT 1987
Change $F/sapply/sapply.i to shorten instr if max= was given.
=========
1026: Mon Aug 3 09:24:36 EDT 1987
Joe Kruskal reported the following problem with hclust:
Note the inversion in the last two height values.

> s2
       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
[1,]   25.5   1.9  11.5  10.4  12.4  12.6
[2,]    1.9  25.5   3.5   4.8   9.2   7.5
[3,]   11.5   3.5  25.5  11.4  12.3   0.1
[4,]   10.4   4.8  11.4  25.5   6.5  11.7
[5,]   12.4   9.2  12.3   6.5  25.5  11.1
[6,]   12.6   7.5   0.1  11.7  11.1  25.5

> hclust(s2,meth="con")

 $merge
Array:
5 by 2

       [,1]  [,2]
[1,]     -3    -6
[2,]     -1    -2
[3,]      1     2
[4,]     -4    -5
[5,]      3     4

 $height
      0.1  1.9  3.5  6.5  4.8
 $order
       3   6   1   2   4   5
 ----------
Solution:  Fri Aug 7 13:57:43 EDT 1987
JBK supplied a fix to hcp.r
=========
1028: Fri Jan 15 15:23:27 EST 1988
persp had a limit of 100 on the number of rows/cols
in its input matrix.
 ----------
Solution:  Fri Jan 15 15:24:35 EST 1988
Changed $I/persp.m to up limit to 500.
Changed $GRZ/persp.r to pgenerate error if matrix size too big.
=========
