	PROGRAM BEDFORMS
	character*32 infil, outfil, answer, aout, asurf, adraw, abios
	integer drawing, bios 
	logical*1 ioerrs,  more  
	logical*1 opened3, opened4, frame1
	INTEGER chgFRM
	REAL chgZHO, chgTND     
	include 'bedforms.inc'  
c Initialize.   
	chgFRM=0        
	chgZHO=0.0
	chgTND=0.0      
	bios = 0
	frame1=.true.   
	resize=.85      
	infil = 'input.dat'
c        
       WRITE(6,*) ' '
       WRITE(6,*) ' '
       WRITE(6,*) ' Welcome to Bedforms - MS DOS Version '
       WRITE(6,*) ' '
       WRITE(6,*) ' This program allows you to model the formation'
       WRITE(6,*) ' of sedimentary bed forms. Input files are prepared'
       WRITE(6,*) ' using an ASCI text editor. Two versions of the '
       WRITE(6,*) ' complied program were supplied in the distribution.'
       WRITE(6,*) ' BEDFORM - works on 386, 486 or math co-processor '
       WRITE(6,*) ' equiped machines.'
       WRITE(6,*) ' BEDFORMX - for machines without a co-processor.'
       Write(6,*) ' Please read the documentation included with the '
       WRITE(6,*) ' program. This runs 10 times slower. '
       WRITE(6,*) ' '
       WRITE(6,*) '     Program written by - David Rubin'
       WRITE(6,*) ' '
       WRITE(6,*) '   Programming assistance by Rex Sanders, and'
       WRITE(6,*) '               Alan Federman'
       WRITE(6,*) '       United States Geological Survey '
c
c       
   1   fulldisk=.false.        
       surftype=1              
       WRITE(6,*) ' '
       WRITE(6,*) ' '
       WRITE(6,*) ' '
       write(6,*) 'Default Input File Name = '
       write(6,*) infil
       WRITE(6,*) 'ENTER NAME OF NEW FILE -or-' 
       Write(6,*) '"1" to keep old input file.'
       READ(5,*) infil 
       if (infil .eq. '1') infil='input.dat'
   10  WRITE(6,*) 'SPECIFY KIND OF IMAGE'      
       WRITE(6,*) 'For bedforms,       enter 1'        
       WRITE(6,*) 'For dip directions, enter 2'        
       WRITE(6,*) 'To cancel,          enter 3 =>',char(32)
       READ(5,*) drawing       
       adraw = '---------------------------------'
       if (drawing .eq. 1) adraw = 'Bedforms                        '
       if (drawing .eq. 2) adraw = 'Dip Directions                  '
       IF(drawing .EQ. 3)  GO TO 999    
       IF((drawing.NE.1).and.(drawing.NE.2)) THEN    
       WRITE(6,*) 'KIND OF IMAGE MUST BE 1 or 2'      
       GO TO 10      
       ENDIF  
   20  WRITE(6,*) 'SPECIFY KIND OF OUTPUT'     
       WRITE(6,*) 'For drawing on screen, enter 1'     
       WRITE(6,*) 'For PostScript file,   enter 2'     
       WRITE(6,*) 'To cancel,             enter 3 =>',char(32)
       READ(5,*) output        
       aout = '---------                        '
       if (output .eq. 1) then
       aout = 'Screen                           '
       Write (6,*) ' This program defaults to using the VGA BIOS. '
       Write (6,*) ' This should work on all VGA cards, but is slow. '
       Write (6,*) ' To speed screen drawing, type 1 (This might '
       Write (6,*) ' fail on some cards. Use 0 for reliable drawing.'
       Write (6,*) ' Type 0 or 1 => ',char(32)
       read (5,*) bios
       if (bios .ne. 1) bios = 0
       if (bios .eq. 0) abios = 'Writing to VGA BIOS              '
       if (bios .eq. 1) abios = 'Writing to VGA Hardware          '
       endif
       if (output .eq. 2) aout = 'PostScript File      '
       IF(output.EQ.3) GO TO 999     
       IF((output.NE.1).and.(output.NE.2)) THEN      
       WRITE(6,*) 'OUTPUT MUST BE 1 or 2'      
       GO TO 20      
       ENDIF           
       IF(output.eq.2)THEN       
       WRITE(6,*) 'ENTER NAME OF OUTPUT FILE =>',char(32)
       READ(5,*) outfil        
       IF(drawing.EQ.1)THEN
35           WRITE(6,*) 'SPECIFY KIND OF BEDFORM SURFACE'            
       WRITE(6,*) 'For mesh surface,   enter 1'        
       WRITE(6,*) 'For shaded surface, enter 2'        
       WRITE(6,*) 'To cancel,          enter 3 =>',char(32)
       READ(5,*) surftype      
       asurf = '---------                              '
       if (surftype .eq. 1) aout = 'Mesh                             '
       if (surftype .eq. 2) aout = 'Shaded                           '
       IF(surftype.EQ.3)  GO TO 999     
       IF((surftype.NE.1).and.(surftype.NE.2)) THEN          
       WRITE(6,*) 'SURFACE MUST BE 1 or 2'            
	GO TO 35      
			ENDIF         
		ENDIF         
	ENDIF           
  123  WRITE(6,*) 'To review your choices:'
       WRITE(6,*) ' '
       WRITE(6,*) 'Type of image is: ', adraw
       WRITE(6,*) 'Type of output is ', aout 
       if(output .eq. 1) write(6,*) abios
       WRITE(6,*) 'Input file name  is ', infil
       if (surftype .eq. 2) WRITE(6,*) 'Type of surface is ', asurf
       if (output .eq. 2) WRITE(6,*) 'Output file name  is ', outfil
       WRITE(6,*) ' '
       if (output .eq. 1) then
       write(6,*) ' '
       write(6,*) ' A slow cpu (386sx- w/o 80387 ) may take up to'
       WRITE(6,*) ' 20 minutes to draw, so please wait.'
       endif
       if (output .eq. 2) then
       write(6,*) ' '
       WRITE(6,*) ' Output file name: ', outfil
       WRITE(6,*) ' will be created, please be patient. '
       endif
       pause
c
       OPEN (4,file=infil, status='old',err=200)       
       opened4=.true.  
       OPEN (3,file=outfil,err=201)    
       opened3=.true.  
       IF(drawing.EQ.1) THEN     
       call gdunes (ioerrs,chgFRM,chgZHO,chgTND,frame1,bios)      
       ELSE      
       call dips(ioerrs,bios)     
       ENDIF   
       IF(ioerrs) THEN    
       WRITE(6,*) 'ERROR IN INPUT FILE'     
	ENDIF   
       GO TO 999
200    continue
       WRITE(6,*) 'ERROR IN OPENING INPUT FILE'       
       WRITE(6,*) 'HIT RETURN TO EXIT' 
       PAUSE   
       GO TO 999
201    WRITE(6,*) 'ERROR IN OPENING OUTPUT FILE'       
C       WRITE(6,*) 'HIT RETURN TO EXIT' 
	PAUSE
999     continue        
	IF(opened4) CLOSE(4)    
	IF(opened3) CLOSE(3)            
       WRITE(6,*) 'ANOTHER DRAWING?'  
       WRITE(6,*) 'Y or YES; N or NO  ',char(32)  
       READ(5,*) answer       
	IF((answer.NE.'N').AND.(answer.NE.'NO').AND.     
     &  (answer.NE.'n').AND.(answer.NE.'no'))    GO TO 1       
       end
c
c********************************************************
c
	subroutine gdunes (ioerrs,chgFRM,chgZHO,chgTND,frame1,bios)
c This program uses sine curves to simulate sediment bedforms and
c cross-bedding. The program creates images showing bedform morphology,
c vertical sections, and horizontal sections.  The comments in the
c program are restricted to the more general aspects of the bedform-drawing
c routines; Macintosh-specific code is not included or documented.
c
c Author: David M. Rubin, U.S. Geological Survey, Menlo Park, CA 94025
c Date: revised 5/9/88
c        implicit none
	INTEGER GRID, LDEV, key, bios
	PARAMETER (GRID=100)
	INTEGER IGRDSP, PATTRN
	REAL z(-10:GRID+10,-10:GRID+10)
	REAL zcont(-10:GRID+10,-10:GRID+10)
	REAL zsub1, zsub2, zsub3, zsub4, xplot, yplot
	REAL xpg, ypg, dx, dy
	REAL zproj, zproj1, zproj2, zproj3, zproj4
	REAL xarr(0:2*GRID), yarr(0:2*GRID)
	REAL zarr(0:2*GRID), zlast(0:2*GRID)
	REAL ypage(0:GRID,0:GRID), ypgmax(-GRID:GRID) 
	REAL ZBED(-10:2*GRID+10), ZINTRP(0:2*GRID)
	REAL SPCNGF, SMTRYF, SMCHGF, SMPRDF, SMFAZF, HTRTOF, HTPRDF
	REAL HTFAZF, TRENDF, VELOCF, VLCHGF, VLPRDF, VLFAZF, HTCHGF
	REAL SPCNGS, SMTRYS, SMCHGS, SMPRDS, SMFAZS, HTRTOS, HTPRDS
	REAL HTFAZS, TRENDS, VELOCS, VLCHGS, VLPRDS, VLFAZS, HTCHGS
	REAL SPCNGT, SMTRYT, SMCHGT, SMPRDT, SMFAZT, HTRTOT, HTPRDT
	REAL HTFAZT, TRENDT, VELOCT, VLCHGT, VLPRDT, VLFAZT, HTCHGT
	REAL PHASEF, SNSPF1, SNMGF1, SNFZF1, SNVLF1
	REAL SNSPF2, SNMGF2, SNFZF2, SNVLF2
	REAL PHASES, SNSPS1, SNMGS1, SNFZS1, SNVLS1
	REAL SNSPS2, SNMGS2, SNFZS2, SNVLS2
	REAL PHASET, SNSPT1, SNMGT1, SNFZT1, SNVLT1
	REAL SNSPT2, SNMGT2, SNFZT2, SNVLT2
	REAL ANGLEA, ANGLEB, ANGLEC, yfd, ysd, ytd, x, y, ZHORIZ
	REAL ELVMIN, DEPRAT, DEPCHG, DEPPRD, DEPFAZ 
	REAL pi, big, BD, FD, SD, TD, TIME, zmin, zmax, zref, zcnmax
	REAL PROFF, PROFS, PROFT, sizef, sizes, sizet, xfd, xsd, xtd 
	REAL dispfd, dispsd, disptd, zfd, zsd, ztd, shape, DPOSIT
	INTEGER FRMNUM, N, ix, iy, INTXBD, NBEDSH, ixloc, j, jj, k
	INTEGER TYPE, CHOICE
	CHARACTER*80 dummy, FIGCAP
	CHARACTER*31 FILENM
	LOGICAL CAPLOG, FILOG, FRMLOG, MORHRZ, MORVRT
	INTEGER chgFRM
	REAL chgZHO, chgTND
	integer iost 
	LOGICAL ioerrs, frame1
	include "bedforms.inc"
c Macintosh-specific declarations.     
c       integer toolbx
c       INTEGER NOTEALERT
c       PARAMETER (NOTEALERT=Z'9874A000')
c       INTEGER MOVETO
c       PARAMETER (MOVETO=Z'89309000')
c In case user resets in the dialog box displayed in subroutine adjstn.
	SAVE IGRDSP,INTXBD, ZHORIZ
	WRITE(6,*) ' Calculation starting. '
	ldev=2
	ioerrs= .true.
	Read (4, *, IOSTAT=iost) FILENM
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FIGCAP, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASEF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASES, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASET, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TYPE, dummy
	IF(iost.ne.0) RETURN
	IF((TYPE.LT.1).OR.(TYPE.GT.6)) RETURN
	Read (4, *, IOSTAT=iost) CHOICE, dummy
	IF(iost.ne.0) RETURN
	IF((CHOICE.LT.0).OR.(CHOICE.GT.4)) RETURN
	Read (4, *, IOSTAT=iost) ELVMIN, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPRAT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPCHG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPPRD, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPFAZ, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) NBEDSH, dummy
	IF(iost.ne.0) RETURN
	IF(frame1) THEN
	Read (4, *, IOSTAT=iost) INTXBD, dummy
	IF(iost.ne.0) RETURN
	IF(INTXBD.LT.1) RETURN
	 ELSE
	   Read (4, *, IOSTAT=iost) dummy
	ENDIF
	Read (4, *, IOSTAT=iost) FRMNUM, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) CAPLOG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FILOG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FRMLOG, dummy
	IF(iost.ne.0) RETURN
c In the dunes program IGRDSP is used to determine grid spacing; small
c values (such as 1 or 2) give detailed bedform topography but take longer 
c to run than larger values (5 or 10).  In the dips program, the same 
c variable is used to select between precision and speed by setting the
c number of imaginary boreholes.
	IF(frame1) THEN
	Read (4, *, IOSTAT=iost) IGRDSP, dummy
	IF(iost.ne.0) RETURN
	IF((IGRDSP.LT.1).OR.((MOD(10,IGRDSP).NE.0).AND.(IGRDSP.NE.4)))
     &      RETURN
	 ELSE
	Read (4, *, IOSTAT=iost) dummy
	ENDIF
c Only read ZHORIZ for the first frame in a sequence, in case user changed 
c the value in the dialog box called by subroutine adjstn.
	IF(frame1) THEN
	Read (4, *, IOSTAT=iost) ZHORIZ, dummy
	IF(iost.ne.0) RETURN
c Make sure ZHORIZ is not equal to 1.0.
	IF((ZHORIZ.GE.1.0).and.(ZHORIZ.LT.1.01))THEN
	ZHORIZ=1.01
	ENDIF
	ENDIF
	ioerrs= .false.
	pi=3.14159
c Calculate the migration direction of scour pits formed by intersecting
c bedform troughs of the first two sets of bedforms.  When specified in 
c the input paramaters, this calculation is used to rotate the bedforms 
c such that the sides of the block diagram are normal and parallel to the 
c axes of trough-shaped sets of cross-bedding..
	IF(tan(TRENDF*2*pi/360).NE.tan(TRENDS*2*pi/360))THEN
	IF((SPCNGF.GT.0).AND.(SPCNGS.GT.0))THEN 
	ANGLEA=atan2(VELOCF,tan((90+TRENDF-TRENDS)*2*pi/360)*VELOCF-
     &      VELOCS/sin((TRENDS-TRENDF) *2*pi /360)) *360/(2*pi)-90
	ENDIF
	ENDIF
	IF(CHOICE.NE.0)THEN
	  ANGLEB=TRENDS-TRENDF
	  ANGLEC=TRENDT-TRENDF
	  TRENDF=-ANGLEA+(CHOICE-1)*90
	  TRENDS=TRENDF+ANGLEB
	 IF(SPCNGT.NE.0)THEN
	   TRENDT=TRENDF+ANGLEC
	  ENDIF
	ENDIF
	
c Initialize plotting.
c All plotting by this program is performed by calls to 4 plotting 
c subroutines: PLOTS, PLOT, and SYMBOL (CalComp library or 
c equivalent).  The first call must be to PLOTS, which initializes 
c plotting; LDEV is an integer that represents the output device.
c The PLOT subroutine is used to draw all lines in this program.  PLOT 
c moves the pen to a new position on the page.  Coordinates of the new
c position (in inches) are specified by the first two arguments.
c The third argument determines whether the pen is up (3) or down (2).  
c If the sign of this argument is negative, a new origin is defined at
c the specified point.  To end plotting, the third argument must be 999.
c FACTOR changes the scale of the plot in proportion to the specified value.
c
	CALL rplots (0, bios, output)
	if(fulldisk) RETURN
	IF(TYPE.EQ.3)THEN
	  big=MAX(SPCNGF, SPCNGS, SPCNGT)
	  BD=100/big
	ENDIF
c Prevent division by zero.
	IF(SPCNGF.EQ.0)FD=10**5
	IF(SPCNGS.EQ.0)SD=10**5
	IF(SPCNGT.EQ.0)TD=10**5
	IF(SNSPF1.EQ.0)SNSPF1=10**5
	IF(SNSPF2.EQ.0)SNSPF2=10**5
	IF(SNSPS1.EQ.0)SNSPS1=10**5
	IF(SNSPS2.EQ.0)SNSPS2=10**5
	IF(SNSPT1.EQ.0)SNSPT1=10**5
	IF(SNSPT2.EQ.0)SNSPT2=10**5
	IF(SMPRDF.EQ.0)SMPRDF=10**5
	IF(SMPRDS.EQ.0)SMPRDS=10**5
	IF(SMPRDT.EQ.0)SMPRDT=10**5
	IF(HTPRDF.EQ.0)HTPRDF=10**5
	IF(HTPRDS.EQ.0)HTPRDS=10**5
	IF(HTPRDT.EQ.0)HTPRDT=10**5
	IF(VLPRDF.EQ.0)VLPRDF=10**5
	IF(VLPRDS.EQ.0)VLPRDS=10**5
	IF(VLPRDT.EQ.0)VLPRDT=10**5
	IF(DEPPRD.EQ.0)DEPPRD=10**5
	IF(SPCNGF.NE.0)FD=100/SPCNGF
	IF(SPCNGS.NE.0)SD=100/SPCNGS
	IF(SPCNGT.NE.0)TD=100/SPCNGT
c Define xarr and yarr.  This do loop transforms the x-y-z coordinates
c of grid points on the vertical sections to x-y page coordinates.  At
c this point in the program, topography is not incorporated; the stored 
c values represent the locations of two front edges of the zero-elevation 
c plane.  Final location of points on the page depends also on local
c elevation of the bed surface or cross-bed traces.
	DO 5, j=0, 2*GRID
	xarr(j)=FLOAT(j-GRID)
	  IF(j.LE.GRID)yarr(j)=0.37*(GRID-j)
	  IF(j.GT.GRID)yarr(j)=0.5*(j-GRID)
   5    continue
c Vary these parameters if producing an animation sequence.
	FRMNUM=FRMNUM+chgFRM
	ZHORIZ=ZHORIZ+chgZHO
	TRENDF=TRENDF+chgTND
	TRENDS=TRENDS+chgTND
	TRENDT=TRENDT+chgTND
	N=-1
	MORHRZ=.true.
	MORVRT=.true.
   10   IF((MORHRZ.OR.MORVRT).AND.(N.LT.NBEDSH+FRMNUM)) THEN
	  N=N+1
	MORVRT=.false.
c As N is incremented, bedforms move backward through time and space.  
c Programming the bedforms to migrate backward from the end of the 
c depositional episode is more efficient than forward from the beginning, 
c because forward migration requires that bed elevations be calculated, 
c stored, and often removed as a result of later erosion.  In contrast, 
c backward migration enables beds to be plotted each time new elevations 
c are calculated, and elevations of each surface need only be stored until 
c the next surface is calculated by the program.
	  TIME=REAL(FRMNUM-N)
c From this line until statement 30 the program determines the bedform
c morphology.  The following 10 equations determine terms that vary with
c time but not with location on the surface.
c Calculate amount of deposition for the time when surface is to be
c illustrated.
	  DPOSIT=(DEPRAT*TIME)+DEPCHG*(-DEPPRD/(2*pi))*
     &    cos(((DEPFAZ-90)*2*pi/360)+(TIME*2*pi/DEPPRD))
c Calculate bedform asymmetry.
	  PROFF=((1-SMTRYF)+SMCHGF*sin(((-TIME/SMPRDF)-SMFAZF/360)*
     &    pi*2.0))*pi/2.0
	  PROFS=((1-SMTRYS)+SMCHGS*sin(((-TIME/SMPRDS)-SMFAZS/360)*
     &    pi*2.0))*pi/2.0
	  PROFT=((1-SMTRYT)+SMCHGT*sin(((-TIME/SMPRDT)-SMFAZT/360)*
     &    pi*2.0))*pi/2.0
c Calculate bedform sizes.
	  sizef=HTRTOF+(HTCHGF*sin(((TIME/HTPRDF)*2*pi)+
     &    ((HTFAZF-90)*2*pi/360.0)))
	  sizes=HTRTOS+(HTCHGS*sin(((TIME/HTPRDS)*2*pi)+
     &    ((HTFAZS-90)*2*pi/360.0)))
	sizet=HTRTOT+(HTCHGT*sin(((TIME/HTPRDT)*2*pi)+
     &    ((HTFAZT-90)*2*pi/360.0)))
c Calculate bedform locations.
	  dispfd=VELOCF*TIME+VLCHGF*(-VLPRDF/(2*pi))*
     &    cos(((VLFAZF-90)*2*pi/360)+(TIME*2*pi/VLPRDF))
	  dispsd=VELOCS*TIME+VLCHGS*(-VLPRDS/(2*pi))*
     &    cos(((VLFAZS-90)*2*pi/360)+(TIME*2*pi/VLPRDS))
	  disptd=VELOCT*TIME+VLCHGT*(-VLPRDT/(2*pi))*
     &    cos(((VLFAZT-90)*2*pi/360)+(TIME*2*pi/VLPRDT))
c These 2 nested loops determine the elevations of all points on the 
c bedform surface.
	DO 30, ix=-IGRDSP, GRID+IGRDSP, IGRDSP
	    DO 20, iy=-IGRDSP, GRID+IGRDSP, IGRDSP
	      IF(MORHRZ.OR.(ix.EQ.0).OR.(iy.EQ.0).OR.(N.EQ.0))THEN
		x=REAL(ix)-50.0
		y=REAL(iy)-50.0
		yfd=x*sin(TRENDF*2*pi/360)+y*cos(TRENDF*2*pi/360)
		ysd=x*sin(TRENDS*2*pi/360)+y*cos(TRENDS*2*pi/360)
		ytd=x*sin(TRENDT*2*pi/360)+y*cos(TRENDT*2*pi/360)
		xfd=(x*cos(TRENDF*2*pi/360)-y*sin(TRENDF*2*pi/360)-
     &          dispfd-SPCNGF*PHASEF/360)-(SNMGF1*sin((yfd*2*pi/SNSPF1)+
     &          ((SNFZF1*2*pi/360)+(TIME*SNVLF1*2*pi/SNSPF1))))-
     &          (SNMGF2*sin((yfd*2*pi/SNSPF2)+((SNFZF2*2*pi/360)+
     &          (TIME*SNVLF2*2*pi/SNSPF2))))
		xsd=(x*cos(TRENDS*2*pi/360)-y*sin(TRENDS*2*pi/360)-
     &          dispsd-SPCNGS*PHASES/360)-(SNMGS1*sin((ysd*2*pi/SNSPS1)+
     &          ((SNFZS1*2*pi/360)+(TIME*SNVLS1*2*pi/SNSPS1))))-
     &          (SNMGS2*sin((ysd*2*pi/SNSPS2)+((SNFZS2*2*pi/360)+
     &          (TIME*SNVLS2*2*pi/SNSPS2))))
		xtd=(x*cos(TRENDT*2*pi/360)-y*sin(TRENDT*2*pi/360)-
     &          disptd-SPCNGT*PHASET/360)-(SNMGT1*sin((ytd*2*pi/SNSPT1)+
     &          ((SNFZT1*2*pi/360)+(TIME*SNVLT1*2*pi/SNSPT1))))-
     &          (SNMGT2*sin((ytd*2*pi/SNSPT2)+((SNFZT2*2*pi/360)+
     &          (TIME*SNVLT2*2*pi/SNSPT2))))

c At this point in the program, the topography of the separate sets of
c bedforms has been determined; from here to statement 30 the various
c sets of bedforms are superimposed.
		IF((TYPE.EQ.1).OR.(TYPE.EQ.2).OR.(TYPE.EQ.4).OR.
     &          (TYPE.EQ.6))THEN  
		  zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+
     
     &            PROFF)/FD)
		  IF(TYPE.EQ.1)shape=1
		  IF((TYPE.EQ.2).OR.(TYPE.EQ.6))THEN
		    shape=((7.5/FD)-zfd)/(15/FD)
		  ENDIF
		  IF(TYPE.EQ.4)shape=1-((7.5/FD)-zfd)/(15/FD)
		  zfd=zfd*sizef
		  zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &            PROFS)/SD)*shape*sizes
		  IF(TYPE.EQ.6)shape=1
		  ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     &            PROFT)/TD)*shape*sizet
 
	z(ix,iy)=zfd+zsd+ztd+DPOSIT
		  IF(z(ix,iy).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+
     &            DPOSIT)THEN 
		    z(ix,iy)=((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+DPOSIT
		  ENDIF
		ENDIF

		IF(TYPE.EQ.3)THEN
		  zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+

     &            PROFF)/FD+7.5/FD)*sizef
		  zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &            PROFS)/SD+7.5/SD)*sizes
		  ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     &            PROFT)/TD+7.5/TD)*sizet
		  z(ix,iy)=MAX(zfd, zsd, ztd)
		  z(ix,iy)=z(ix,iy)+DPOSIT
		  IF(z(ix,iy).LT.7.5*(1+ELVMIN)/BD+DPOSIT) THEN
		    z(ix,iy)= (7.5*(1+ELVMIN)/BD)+DPOSIT
		  ENDIF
		ENDIF

		IF (TYPE.EQ.5) THEN
		  zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+
     &            PROFF)/FD)*sizef
		  zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &            PROFS)/SD+7.5/SD)*sizes
		  ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     
     &            PROFT)/TD+7.5/TD)*sizet
		  z(ix,iy)=zfd+MAX(zsd, ztd)+DPOSIT
		  IF(z(ix,iy).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+
     &            DPOSIT)THEN
		    z(ix,iy)=((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+DPOSIT
		  ENDIF
		ENDIF

c Determine high and low points on bedform surface, and set initial values
c of elevation arrays (zcont and ZBED).
		IF((N.EQ.0).AND.(ix.EQ.-IGRDSP).AND.(iy.EQ.-IGRDSP))THEN
		  zmin=z(ix,iy)
		  zmax=z(ix,iy)
		ENDIF
		IF(N.EQ.0)THEN
		  IF((ix.GE.0).AND.(iy.GE.0)) THEN
		    zmin=MIN(zmin,z(ix,iy))
		    zmax=MAX(zmax,z(ix,iy))
		    
	IF(ix.EQ.0) THEN
		      ZBED(GRID-iy)=z(0,iy)
		    ELSEIF(iy.EQ.0) THEN
		      ZBED(GRID+ix)=z(ix,0)
		    ENDIF
		  ENDIF
		  zcont(ix,iy)= z(ix,iy)
		ENDIF

c Set new values of elevation array to be used to calculate locations of
c traces of cross-beds in horizontal section.
		IF(N.GT.0) THEN
		  IF(z(ix,iy).LT.zcont(ix,iy)) THEN
		    zcont(ix,iy)=z(ix,iy)
		  ENDIF
		
	ENDIF

c Set new values of elevation array for cross-beds in vertical sections.
		IF(N.GT.0) THEN
		  IF(ix.EQ.0) THEN
		    ZBED(GRID-iy)=z(0,iy)
		  ELSEIF(iy.EQ.0) THEN
		    ZBED(GRID+ix)=z(ix,0)
		  ENDIF
		ENDIF
		  
		IF((ix.EQ.-IGRDSP).AND.(iy.EQ.-IGRDSP)) THEN
		  zcnmax= -30.0
		ELSE
		  zcnmax= MAX(zcnmax,zcont(ix,iy))
		ENDIF
		
		IF((ix.EQ.0).OR.(iy.EQ.0)) THEN
		  IF(z(ix,iy).GT.-25.0) MORVRT=.true.
		ENDIF
		
	      ENDIF
   20       continue
   30     continue

	  IF(N.GT.0) THEN
	    IF(zcnmax.GT.zref) THEN
	      MORHRZ= .true.
	    ELSE
	      MORHRZ= .false.
	    ENDIF
	  ENDIF
		
	  
	IF(N.EQ.0)THEN
	    zref= zmin+(zmax-zmin)*ZHORIZ
	    IF(zref.LT.-25.0) zref= -25.0
	    IF(zmax.GT.zref) MORHRZ= .true.

c For CALCOMP plotting.
	    IF(output.EQ.5)THEN
	      call rplot(5.1, 2.1, -3)
	      CALL rfactor(0.047)
	      
c For plotting on screen.
	    ELSEIF(output.EQ.1)THEN
	      xplot= 6.7*resize
	      yplot= (2.2*resize)+(1.0-resize)*8.0
	      call rplot(xplot, yplot, -3)
	      CALL rfactor(0.053*resize)
c For making postscript files.
	    ELSEIF((output.EQ.2).OR.(output.EQ.3))THEN
	      call rplot(5.1, 2.1, -3)
	      CALL rfactor(0.047*resize)
	    ENDIF
c SYMBOL is a subroutine that is used to plot text and symbols.  The first
c argument is the x-location on the page, the second is the y-location, the
c third is the height of the letters (in inches, before the size is reduced 
c by FACTOR), the fourth is the character variable to be plotted, the fifth
c is the angular rotation of the text (0.0 for normal upright text), and the 
c final argument is the integer number of characters to be plotted.
	
	IF(FILOG) THEN
c         
	IF((LDEV.EQ.2).OR.(LDEV.EQ.5) .and. (output.EQ.1)) THEN
	CALL symbol (-100.0, -28.00, 3.0, FILENM, 0.0, 31)
	endif
	  ELSE
	  CALL symbol (-100.0, -30.00, 2.9, FILENM, 0.0, 31)
	ENDIF

	IF(CAPLOG) THEN
c         
	IF((LDEV.EQ.2).OR.(LDEV.EQ.5) .and. (output.EQ.1)) THEN
	CALL symbol (-100.0, -38.00, 3.0, FIGCAP, 0.0, 80)
	ELSE
	CALL symbol (-100.0, -40.00, 3.0, FIGCAP, 0.0, 80)
	ENDIF
	ENDIF

	      
c Plot edges of block.
	    call rplot(-100.0, 37.0+1.2*MIN(zref,z(0,100)), 3)
	    call rplot (-100.0, 7.0, 2)
	    call rplot (0.0, -30.0, 2)
	    call rplot (0.0, 1.2*MIN(zref,z(0,0)), 2)
	    call rplot (0.0, -30.0, 3)
	    call rplot (100.0, 20.0, 2)
	    call rplot (100.0, 50.0+1.2*MIN(zref,z(100,0)), 2)
	  ENDIF

c Interpolate values of elevation array to plot cross-beds in vertical 
c sections.
	  DO 35, j=0,2*GRID
	  
	    
	    ixloc=MOD(j,IGRDSP)
	    IF(N.EQ.0)THEN
	      
	IF(ixloc.EQ.0) THEN
		zarr(j)= ZBED(j)
	      ELSE
		zarr(j)=ZBED(j-ixloc)+(ZBED(j+IGRDSP-ixloc)-
     &          ZBED(j-ixloc))*ixloc/IGRDSP
	      ENDIF
	      zlast(j)=zarr(j)
	      ZINTRP(j)=zarr(j)
	    ELSE
	      IF(ixloc.EQ.0) THEN
		ZINTRP(j)= ZBED(j)
	      ELSE
		ZINTRP(j)=ZBED(j-ixloc)+(ZBED(j+IGRDSP-ixloc)-
     &          ZBED(j-ixloc))*ixloc/IGRDSP
	      ENDIF
	    ENDIF
35        continue

c Reset values of elevation array for plotting cross-beds in vertical 
c sections.  To be plotted, elevations at any x-y point must be less 
c than elevations previously plotted at that x-y point, and also must
c be above the base of the block diagram.
	  DO 40, j=0,2*GRID
	    zarr(j)=MIN(zarr(j), ZINTRP(j), zref)
	    IF(zarr(j).LE.-25.0) zarr(j)=-25.0
40        continue

c From this line to statement 50 the program does the final conversion
c from x-y-z space to x-y page coordinates, plots the surface mesh, 
c suppresses hidden lines, and keeps the pen from duplicating lines that
c were previously drawn. This part of the program can be extracted to 
c plot other mesh surfaces where elevations of the surface are specified 
c in a two-dimensional array z(ix,iy), where ix=iy.

	  IF(N.EQ.0)THEN
	    if(surftype.eq.2) then      !Shaded surface.
	      call surfac (z, GRID, IGRDSP, zref, zmax, zmin)
	    else                        !Mesh surface.

	      DO 41, j=0,GRID,IGRDSP
	      
		
		DO 41, k=0,GRID,IGRDSP
		  ypage(j,k)=(0.5*j)+(0.37*k)+(1.2*z(j,k))              
41            continue
 
	      DO 42, j= -GRID,GRID,IGRDSP
	      
		
		IF(j.LE.0) THEN
		  ypgmax(j)= ypage(0,-j)
		ELSE            
		  ypgmax(j)= ypage(j,0)
		ENDIF
42            continue
 
	      DO 45, j=0,GRID,IGRDSP
		  
		DO 45, k=0,GRID,IGRDSP
		
		  xplot=FLOAT(j-k)
		  IF(k.EQ.0) THEN
		    call rplot(xplot, ypgmax(j), 3)
		  ELSE
		    
	ypgmax(j-k)= MAX(ypage(j,k),ypgmax(j-k))
		    IF((z(j,k).GT.zref).AND.
     &                (z(j,k-IGRDSP).GT.zref)) THEN
		      call rplot(xplot,ypgmax(j-k),3)
		    ELSEIF((z(j,k).LE.zref).AND.
     &                (z(j,k-IGRDSP).LE.zref)) THEN
		      call rplot(xplot, ypgmax(j-k), 2)
		    ELSE
		      dx=(zref-z(j,k))*IGRDSP/(z(j,k-IGRDSP)-z(j,k))
		      xplot=FLOAT(j-k)+dx
		      yplot=(0.5*j)+(0.37*(k-dx))+(1.2*zref)
			IF(z(j,k-IGRDSP).GT.zref) THEN
			  call rplot(xplot, yplot, 3) 
			  call rplot(FLOAT(j-k), ypgmax(j-k), 2)
			ELSE
			  call rplot(xplot, yplot, 2) 
			  
	call rplot(FLOAT(j-k), ypgmax(j-k), 3)
			ENDIF
		    ENDIF
		  ENDIF
45            continue
 
	      DO 47, j=-GRID,GRID,IGRDSP
		IF(j.LE.0) THEN
		  ypgmax(j)= ypage(0,-j)
		ELSE            
		  ypgmax(j)= ypage(j,0)
		ENDIF
47            continue
	    
	      DO 48, k=0,GRID,IGRDSP
		DO 48, j=0,GRID, IGRDSP
		  xplot=FLOAT(j-k)
		  IF(j.EQ.0) THEN
		    call rplot(xplot, ypgmax(j-k), 3)
		  ELSE
		    ypgmax(j-k)= MAX(ypage(j,k),ypgmax(j-k))
		    IF((z(j,k).GT.zref).AND.
     &              (z(j-IGRDSP,k).GT.zref)) THEN
		      call rplot(xplot,ypgmax(j-k),3)
		    ELSEIF((z(j,k).LE.zref).AND.
     &              (z(j-IGRDSP,k).LE.zref)) THEN
		      
	call rplot(xplot, ypgmax(j-k) ,2)
		    ELSE
		   dx=(zref-z(j,k))*FLOAT(IGRDSP)/(z(j-IGRDSP,k)-z(j,k))
		      xplot=FLOAT(j-k)-dx
		      yplot=(0.5*(j-dx))+(0.37*k)+(1.2*zref)
			IF(z(j-IGRDSP,k).GT.zref) THEN
			  call rplot(xplot, yplot, 3) 
			  
	call rplot(FLOAT(j-k), ypgmax(j-k), 2)
			ELSE
			  call rplot(xplot, yplot, 2) 
			  call rplot(FLOAT(j-k), ypgmax(j-k), 3)
			ENDIF
		    ENDIF
		  ENDIF
48            continue          
		
	    endif       !(surftype)

	  ENDIF         !(N)

c From this line to statement 70 the program plots cross-bed traces on
c horizontal sections.  The program uses a contouring algorithm to solve
c for intersections of the bedform surface and the horizontal plane.
	  IF((N.EQ.0).OR.(MOD(ABS(chgFRM-N),INTXBD).EQ.0)) THEN
	  
	    if(fulldisk)RETURN

	    IF (MORHRZ) THEN

	      IF(N.eq.0)THEN
		IF(zref.LT.zmax)THEN
		  call rplot (-100.0, 37.0+1.2*zref, 3)
		  call rplot (0.0, 87.0+1.2*zref, 2)
		  
	call rplot (100.0, 50.0+1.2*zref, 2)
		  IF(zref.GT.zmin)THEN
		    call rplot (0.0, 1.2*zref, 2)
		    call rplot (-100.0, 37.0+1.2*zref, 2)
		  ENDIF
		ENDIF
	      ENDIF
	    
	      DO 70, ix=0,GRID-IGRDSP,IGRDSP
		DO 60, iy=0,GRID-IGRDSP,IGRDSP
		  PATTRN=0
		  zsub1=zcont(ix,iy)
		  zsub2=zcont(ix,iy+IGRDSP)
		  zsub3=zcont(ix+IGRDSP,iy+IGRDSP)
		  zsub4=zcont(ix+IGRDSP,iy)

		  IF((zsub1.LE.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=1
		    GO TO 51
		  ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=1
		  ENDIF

51                IF(PATTRN.EQ.1)THEN
		    dx=((zsub2-zref)*IGRDSP)/(zsub2-zsub3)
		    xplot=REAL(ix)+dx
		    
	yplot=REAL(iy+IGRDSP)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    xplot=REAL(ix+IGRDSP)
		    
	dy=((zsub4-zref)*IGRDSP)/(zsub4-zsub3)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  ENDIF

		  IF((zsub1.LE.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=2
		    GO TO 52
		  ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=2
		  ENDIF

   52             IF(PATTRN.EQ.2)THEN
		    xplot=REAL(ix)
		    dy=((zsub1-zref)*IGRDSP)/(zsub1-zsub2)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    dx=((zsub2-zref)*IGRDSP)/(zsub2-zsub3)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy+IGRDSP)
		    xpg=xplot-yplot
		    
	ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=3
		    GO TO 53
		  ENDIF

		  IF((zsub1.LE.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=3
		    GO TO 53
		  ENDIF

   53             IF(PATTRN.EQ.3)THEN
		    xplot=REAL(ix)
		    dy=((zsub1-zref)*IGRDSP)/(zsub1-zsub2)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)
		    dx=((zsub1-zref)*IGRDSP)/(zsub1-zsub4)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  ENDIF
		  IF((zsub1.LE.zref).AND.(zsub2.LE.zref).AND.
     &             (zsub3.LE.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=4
		    GO TO 54
		  ENDIF
		  IF((zsub1.GT.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=4
		  ENDIF

   54             IF(PATTRN.EQ.4)THEN
		    xplot=REAL(ix+IGRDSP)
		    dy=((zsub4-zref)*IGRDSP)/(zsub4-zsub3)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    dx=((zsub1-zref)*IGRDSP)/(zsub1-zsub4)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    
		GO TO 60
		  ENDIF

		  IF((zsub1.LE.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=5
		    GO TO 55
		  ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=5
		  ENDIF

   55             IF(PATTRN.EQ.5)THEN
		    xplot=REAL(ix)
		    dy=((zsub1-zref)*IGRDSP)/(zsub1-zsub2)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    xplot=REAL(ix+IGRDSP)
		    dy=((zsub4-zref)*IGRDSP)/(zsub4-zsub3)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  
	ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.LE.zref))THEN
		    PATTRN=6
		    GO TO 56
		  ENDIF

		  IF((zsub1.LE.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.GT.zref))THEN
		    PATTRN=6
		  ENDIF

   56             IF(PATTRN.EQ.6)THEN
		    dx=((zsub2-zref)*IGRDSP)/(zsub2-zsub3)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy+IGRDSP)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    dx=((zsub1-zref)*IGRDSP)/(zsub1-zsub4)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  ENDIF

		  
	IF((zsub1.LE.zref).AND.(zsub2.GT.zref).AND.
     &            (zsub3.LE.zref).AND.(zsub4.GT.zref))THEN
		    zproj1=zsub1+(0.5*(zsub1-
     &              zcont(ix-IGRDSP,iy-IGRDSP)))
		    zproj2=zsub2+(0.5*(zsub2-
     &              zcont(ix-IGRDSP,iy+2*IGRDSP)))
		    zproj3=zsub3+(0.5*(zsub3-
     &              zcont(ix+2*IGRDSP,iy+2*IGRDSP)))
		    zproj4=zsub4+(0.5*(zsub4-
     &              zcont(ix+2*IGRDSP,iy-IGRDSP)))
		    zproj=(zproj1+zproj2+zproj3+zproj4)/4
		    IF(zproj.LE.zref)THEN
		      PATTRN=7
		      GO TO 57
		    
	ELSEIF(zproj.GT.zref)THEN
		      PATTRN=8
		      GO TO 58
		    
	ENDIF
		  ENDIF

		  IF((zsub1.GT.zref).AND.(zsub2.LE.zref).AND.
     &            (zsub3.GT.zref).AND.(zsub4.LE.zref))THEN
		    zproj1=zsub1+(0.5*(zsub1-
     &              zcont(ix-IGRDSP,iy-IGRDSP)))
		    zproj2=zsub2+(0.5*(zsub2-
     &              zcont(ix-IGRDSP,iy+2*IGRDSP)))
		    zproj3=zsub3+(0.5*(zsub3-
     &              zcont(ix+2*IGRDSP,iy+2*IGRDSP)))
		    zproj4=zsub4+(0.5*(zsub4-
     &              zcont(ix+2*IGRDSP,iy-IGRDSP)))
		    zproj=(zproj1+zproj2+zproj3+zproj4)/4
		    IF(zproj.GT.zref)THEN
		      PATTRN=7
		      GO TO 57
		    ELSEIF(zproj.LE.zref)THEN
		      PATTRN=8
		      GO TO 58
		    ENDIF
		  ENDIF

   57             IF(PATTRN.EQ.7)THEN
		    
		    xplot=REAL(ix)
		    dy=((zsub1-zref)*IGRDSP)/(zsub1-zsub2)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)
	    
		    dx=((zsub2-zref)*IGRDSP)/(zsub2-zsub3)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy+IGRDSP)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)

		    xplot=REAL(ix+IGRDSP)
		    dy=((zsub4-zref)*IGRDSP)/(zsub4-zsub3)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    dx=((zsub1-zref)*IGRDSP)/(zsub1-zsub4)
		    xplot=REAL(ix)+dx
		    
		    yplot=REAL(iy)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		    GO TO 60
		  ENDIF

   58             IF(PATTRN.EQ.8)THEN
		    xplot=REAL(ix)
		    dy=((zsub1-zref)*IGRDSP)/(zsub1-zsub2)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    

		dx=((zsub1-zref)*IGRDSP)/(zsub1-zsub4)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)

		    dx=((zsub2-zref)*IGRDSP)/(zsub2-zsub3)
		    xplot=REAL(ix)+dx
		    yplot=REAL(iy+IGRDSP)
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 3)

		    xplot=REAL(ix+IGRDSP)
		    dy=((zsub4-zref)*IGRDSP)/(zsub4-zsub3)
		    yplot=REAL(iy)+dy
		    xpg=xplot-yplot
		    ypg=0.5*xplot+0.37*yplot+1.2*zref
		    call rplot (xpg, ypg, 2)
		  ENDIF

   60           continue
   70         continue

	    ENDIF

c This loop plots cross-bed traces on the vertical sections of the block
c diagram. Each performance of this do loop draws the traces of the cross-bed
c that underlies previously plotted beds.
	    IF(MORVRT) THEN
	    
	      if(fulldisk) RETURN
	      
	      call rplot(xarr(0), yarr(0)+1.2*zarr(0), 3)
	      DO 80, jj=1, 2*GRID
				    
		IF((zarr(jj).LT.zlast(jj)).OR.
     &          (zarr(jj-1).LT.zlast(jj-1)))THEN
		  call rplot (xarr(jj), yarr(jj)+1.2*zarr(jj), 2)
		ELSEIF (jj.LT.(2*GRID))THEN
		  IF(zlast(jj+1).GT.zarr(jj+1))THEN
		    call rplot (xarr(jj), yarr(jj)+1.2*zarr(jj), 3)
		  ENDIF
		ENDIF
		zlast(jj-1)=zarr(jj-1)
		IF(jj.EQ.2*GRID) zlast(jj)=zarr(jj)
   80         continue
	    ENDIF
	  ENDIF
	  GO TO 10
	ENDIF

110     continue 

c
c       wait for keypress
c
	if (output .eq. 1) key=ixkey()
c Move cursor off plot.
	call rplot (-115.0, -40.0, -3)
c Terminate plotting by calling PLOT with the third argument equal to 999.
c Call vcr to take a frame in PLOT.
	call rplot (0.0, 0.0, 999)
  200   continue
	return
	end
C
	Subroutine surfac (z, GRID, IGRDSP, zref, zmax, zmin)           
	INTEGER GRID, IGRDSP    
c        implicit none           
	include "bedforms.inc"  
	include "cqpbnf.inc"          
	REAL z(-10:110,-10:110), zref           
	INTEGER i, j, k 
	REAL xscreen(0:100,0:100), yscreen(0:100,0:100) 
	REAL zmax, zmin         
	integer*2 ncolors, newcolor, colorinc   
	integer*2 curcolor      
	real gray       
	real xyarr(2,4) 
	logical*1 endlog
	endlog=.false.
	ncolors=256             
c Change array declaration in bedforms.inc to increase.  
	colorinc= 65535/ncolors 
	newcolor= colorinc      
	do 36, i=1,ncolors
	do 26, j=1,3       
	colors(j,i)= newcolor  
   26  continue  
	newcolor= newcolor+colorinc    
   36   continue
c Plot edges of block.      
	call rplot (-100.0, 37.0+1.2*MIN(zref,z(0,100)), 3)      
	call rplot (-100.0, 7.0, 2)      
	call rplot (0.0, -30.0, 2)      
	call rplot (0.0, 1.2*MIN(zref,z(0,0)), 2)        
	call rplot (0.0, -30.0, 3)       
	call rplot (100.0, 20.0, 2)      
	call rplot (100.0, 50.0+1.2*MIN(zref,z(100,0)), 2)       
	IF(zref.LT.zmax)THEN                
	call rplot (-100.0, 37.0+1.2*zref, 3)            
	call rplot (0.0, 87.0+1.2*zref, 2)               
	call rplot (100.0, 50.0+1.2*zref, 2)           
	IF(zref.GT.zmin)THEN              
	call rplot (0.0, 1.2*zref, 2)            
	call rplot (-100.0, 37.0+1.2*zref, 2)          
	ENDIF         
	ENDIF               
	if(output.gt.1) then      
	write(3,600,ERR=888)
  600         format(' S')  
	endif   
c       
c     
	IF(endlog) GO TO 999            
	DO 15, j=0,GRID,IGRDSP  
c         
c     
	IF(endlog) GO TO 999            
	DO 14, k=0,GRID,IGRDSP            
	IF(z(j,k).GT.zref) z(j,k)=zref          
	yscreen(j,k)=(0.5*j)+(0.37*k)+(1.2*z(j,k))
  14    continue
  15    continue        
	DO 20, j= 0,GRID,IGRDSP
c        
c     
	IF(endlog) GO TO 999              
	DO 19, k= 0,GRID,IGRDSP           
	xscreen(j,k)=FLOAT(j-k)
   19    continue
   20    continue
c       
c     
	IF(endlog) GO TO 999            
	DO 30, j= GRID,IGRDSP,-IGRDSP   
c         
c     
	IF(endlog) GO TO 999            
	DO 29, k= GRID,IGRDSP,-IGRDSP     
	IF((z(j,k).eq.zref).and.(z(j-IGRDSP,k).eq.zref).and.     
     &      (z(j,k-IGRDSP).eq.zref).and.(z(j-IGRDSP,k-IGRDSP)     
     &         .eq.zref)) THEN                    
	if(output.eq.1) then              
	curcolor=1                    
	else              
	curcolor=256                  
	endif        
	ELSE              
	  curcolor=INT((z(j,k)-z(j-IGRDSP,k-IGRDSP))     
     &                  *150.0/FLOAT(IGRDSP))+128                   
	ENDIF           
	IF(curcolor.LT.1) curcolor=1            
	IF (curcolor.GT.256) curcolor=256          
	gray=curcolor/256.0             
	xyarr(1,1)=xscreen(j,k)         
	xyarr(2,1)=yscreen(j,k)         
	xyarr(1,2)=xscreen(j-IGRDSP,k)          
	xyarr(2,2)=yscreen(j-IGRDSP,k)          
	xyarr(1,3)=xscreen(j-IGRDSP,k-IGRDSP)           
	xyarr(2,3)=yscreen(j-IGRDSP,k-IGRDSP)           
	xyarr(1,4)=xscreen(j,k-IGRDSP)          
	xyarr(2,4)=yscreen(j,k-IGRDSP)          
	call pspoly (xyarr,gray)        
	if(fulldisk) go to 888          
   29          continue
   30    continue          
	gray=0.00       
	write(3, 601, ERR=888) gray
  601          format(f4.2, ' g')      
	pathop=.false.
  999     continue        
	return
  888       fulldisk=.true. 
	return          
	end             
c ******************************************    
	subroutine pspoly (xyarr,gray)  
C        real             x, y   
	real xyarr(2,4) 
	real gray               
	real            xold, yold, fac 
	integer                          ires   
	logical*1 fulldisk
	common /cqpbnf/ xold, yold, fac, ires
	save   /cqpbnf/ 
C        
	write(3,805, ERR=888) (nint(xyarr(1,1)*fac*ires))       
	write(3,801, ERR=888) " "       
	write(3,805, ERR=888) (nint (xyarr(2,1)*fac*ires))      
	write (3,802, ERR=888) " M"     
	write(3,805, ERR=888) (nint (xyarr(1,2)*fac*ires))      
	write(3,801, ERR=888) " "       
	write(3,805, ERR=888) (nint (xyarr(2,2)*fac*ires))      
	write (3,802, ERR=888) " L"     
	write(3,805, ERR=888) (nint (xyarr(1,3)*fac*ires))      
	write(3,801, ERR=888) " "       
	write(3,805, ERR=888) (nint (xyarr(2,3)*fac*ires))      
	write (3,802, ERR=888) " L"     
	write(3,805, ERR=888) (nint (xyarr(1,4)*fac*ires))      
	write(3,801, ERR=888) " "       
	write(3,805, ERR=888) (nint (xyarr(2,4)*fac*ires))      
	write (3,802, ERR=888) " L"     
	write(3, 804, ERR=888) gray     
	write (3,802, ERR=888) "F"      
  801   format (a,$)
  802   format(a)
  805   format (i7,$)
  804   format(f4.2, ' g')      
	return
  888   close(3,status='delete')        
	fulldisk=.true. 
	end                             

	subroutine dips (ioerrs,bios)
c This program uses sine curves to simulate sediment bedforms. Directional
c properties of the resulting bedding structures are computed throughout 
c vertical profiles at random locations.  The resulting plots show poles of
c cross-beds and bounding surfaces, migration directions of bedforms, and
c rose diagrams of cross-bed dip azimuths. 
c Author: David M. Rubin, U.S. Geological Survey, Menlo Park, CA 94025
c Date: revised 5/9/88
C
	INTEGER GRID, key, bios
	PARAMETER (GRID=100)
	DIMENSION XLOC(24,5), YLOC(24,5)
	DIMENSION ZZ(0:1000,5), ZZmin(5), ZZZ(-9:9), ZBS(5,50)
	DIMENSION ZZZmin(5), XBROSE(-18:18), BSROSE(-18:18)
	INTEGER BSCNT(5)
	REAL SPCNGF, SMTRYF, SMCHGF, SMPRDF, SMFAZF, HTRTOF, HTPRDF
	REAL HTFAZF, TRENDF, VELOCF, VLCHGF, VLPRDF, VLFAZF, HTCHGF 
	REAL SPCNGS, SMTRYS, SMCHGS, SMPRDS, SMFAZS, HTRTOS, HTPRDS
	REAL HTFAZS, TRENDS, VELOCS, VLCHGS, VLPRDS, VLFAZS, HTCHGS
	REAL SPCNGT, SMTRYT, SMCHGT, SMPRDT, SMFAZT, HTRTOT, HTPRDT
	REAL HTFAZT, TRENDT, VELOCT, VLCHGT, VLPRDT, VLFAZT, HTCHGT
	REAL ELVMIN, DEPRAT, DEPCHG, DEPPRD, DEPFAZ, TIME
	REAL pi, ANGLEA, ANGLEB, ANGLEC, DRMIG1, big, BD, FD, SD, TD
	REAL PROFF, PROFS, PROFT, sizef, sizes, sizet, xfd, xsd, xtd 
	REAL dispfd, dispsd, disptd, zfd, zsd, ztd, shape, DPOSIT
	REAL PHASEF, SNSPF1, SNMGF1, SNFZF1, SNVLF1
	REAL SNSPF2, SNMGF2, SNFZF2, SNVLF2
	REAL PHASES, SNSPS1, SNMGS1, SNFZS1, SNVLS1
	REAL SNSPS2, SNMGS2, SNFZS2, SNVLS2
	REAL PHASET, SNSPT1, SNMGT1, SNFZT1, SNVLT1
	REAL SNSPT2, SNMGT2, SNFZT2, SNVLT2
	REAL yfd, ysd, ytd, x, y, dxb, dbs, DIP, A, B
	REAL xint, yint, xpt, ypt, d, xplot, yplot
	REAL AXTRND, RSLTNT, SINDIR
	REAL xoffst, yoffst
	REAL ANGLA, DRMIG2, PITSP1, PITSP2, PITSP3, reduc, VMAX
	INTEGER N, NN, IC, ID, bore, nbores, IGRDSP
	INTEGER P, Q, R, TYPE, CHOICE
	CHARACTER*80 dummy, FIGCAP, LGND1, LGND2, LGND3, LGND5
	CHARACTER*80 LGND6, LGND7, LGND8
	CHARACTER*27 FILENM
	CHARACTER*3 SCALE1, SCALE2, SCALE3, SCALE4
	LOGICAL*1 CAPLOG, FILOG, FRMLOG, endlog
	integer iost
	LOGICAL ioerrs
	   include "bedforms.inc"
	call rplots(0,bios,output)
	ioerrs= .true.
	endlog= .false.
	Read (4, *, IOSTAT=iost) FILENM
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FIGCAP, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASEF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLF1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLF2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZF, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASES, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLS1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLS2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZS, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SPCNGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) PHASET, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMTRYT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SMFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTRTOT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) HTFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLT1, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNSPT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNMGT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNFZT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) SNVLT2, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TRENDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VELOCT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLCHGT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLPRDT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) VLFAZT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) TYPE, dummy
	IF(iost.ne.0) RETURN
	IF((TYPE.LT.1).OR.(TYPE.GT.6)) RETURN
	Read (4, *, IOSTAT=iost) CHOICE, dummy
	IF(iost.ne.0) RETURN
	IF((CHOICE.LT.0).OR.(CHOICE.GT.4)) RETURN
	Read (4, *, IOSTAT=iost) ELVMIN, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPRAT, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPCHG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPPRD, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) DEPFAZ, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) NBEDSH, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) INTXBD, dummy
	IF(iost.ne.0) RETURN
	IF(INTXBD.LT.1) RETURN
	Read (4, *, IOSTAT=iost) FRMNUM, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) CAPLOG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FILOG, dummy
	IF(iost.ne.0) RETURN
	Read (4, *, IOSTAT=iost) FRMLOG, dummy
	IF(iost.ne.0) RETURN
c In the dunes program IGRDSP is used to determine grid spacing; small
c values (such as 1 or 2) give detailed bedform topography but take longer 
c to run than larger values (5 or 10).  In the dips program, the same 
c variable is used to select between precision and speed by setting the
c number of imaginary boreholes.

	Read (4, *, IOSTAT=iost) IGRDSP, dummy
	IF(iost.ne.0) RETURN
	IF((IGRDSP.LT.1).OR.((MOD(10,IGRDSP).NE.0).AND.(IGRDSP.NE.4)))
     &    RETURN
	Read (4, *, IOSTAT=iost) ZHORIZ, dummy
	IF(iost.ne.0) RETURN

	ioerrs= .false.
	
c Tell user what is happening.
	pi=3.14159

c Calculate the migration vector of intersection points of first and 
c second sets of bedforms.
	PITSP1= 0.0
	IF(tan(TRENDF*2*pi/360).NE.tan(TRENDS*2*pi/360))THEN
	  IF((SPCNGF.GT.0).AND.(SPCNGS.GT.0))THEN       
	    ANGLEA=atan2(VELOCF,tan((90+TRENDF-TRENDS)*2*pi/360)*VELOCF-
     &      VELOCS/sin((TRENDS-TRENDF) *2*pi /360)) *360/(2*pi)-90
	    PITSP1=VELOCF/(cos(ANGLEA*2*pi/360))
	  ENDIF
	ENDIF

c Calculate the migration vector of intersection points of first and 
c third sets of bedforms.
	PITSP2= 0.0
	IF(tan(TRENDF*2*pi/360).NE.tan(TRENDT*2*pi/360))THEN
	  IF((SPCNGF.GT.0).AND.(SPCNGT.GT.0))THEN       
	    ANGLA=atan2(VELOCF,tan((90+TRENDF-TRENDT)*2*pi/360)*VELOCF-
     &      VELOCT/sin((TRENDT-TRENDF) *2*pi /360)) *360/(2*pi)-90
	    PITSP2=VELOCF/(cos(ANGLA*2*pi/360))
	  ENDIF
	ENDIF

	IF(CHOICE.NE.0)THEN
	  ANGLEB=TRENDS-TRENDF
	  ANGLEC=TRENDT-TRENDF
	  TRENDF=-ANGLEA+(CHOICE-1)*90
	  IF(TRENDF.gt.360)  TRENDF=TRENDF-360
	  IF(TRENDF.lt.0)  TRENDF=TRENDF+360
	  TRENDS=TRENDF+ANGLEB
	  IF(TRENDS.gt.360)  TRENDS=TRENDS-360
	  IF(TRENDS.lt.0)  TRENDS=TRENDS+360
	  IF(SPCNGT.NE.0)THEN
	    TRENDT=TRENDF+ANGLEC
	    IF(TRENDT.gt.360)  TRENDT=TRENDT-360
	    IF(TRENDT.lt.0)  TRENDT=TRENDT+360
	  ENDIF
	ENDIF

	DRMIG1=ANGLEA+TRENDF
	DRMIG2=ANGLA+TRENDF

	IF(TYPE.EQ.3)THEN
	  big=MAX(SPCNGF, SPCNGS, SPCNGT)
	  BD=100/big
	ENDIF


c Prevent division by zero.
	IF(SPCNGF.EQ.0)FD=10**5
	IF(SPCNGS.EQ.0)SD=10**5
	IF(SPCNGT.EQ.0)TD=10**5
	IF(SNSPF1.EQ.0)SNSPF1=10**5
	IF(SNSPF2.EQ.0)SNSPF2=10**5
	IF(SNSPS1.EQ.0)SNSPS1=10**5
	IF(SNSPS2.EQ.0)SNSPS2=10**5
	IF(SNSPT1.EQ.0)SNSPT1=10**5
	IF(SNSPT2.EQ.0)SNSPT2=10**5
	IF(SMPRDF.EQ.0)SMPRDF=10**5
	IF(SMPRDS.EQ.0)SMPRDS=10**5
	IF(SMPRDT.EQ.0)SMPRDT=10**5
	IF(HTPRDF.EQ.0)HTPRDF=10**5
	IF(HTPRDS.EQ.0)HTPRDS=10**5
	IF(HTPRDT.EQ.0)HTPRDT=10**5
	IF(VLPRDF.EQ.0)VLPRDF=10**5
	IF(VLPRDS.EQ.0)VLPRDS=10**5
	IF(VLPRDT.EQ.0)VLPRDT=10**5
	IF(DEPPRD.EQ.0)DEPPRD=10**5
	IF(SPCNGF.NE.0)FD=100/SPCNGF
	IF(SPCNGS.NE.0)SD=100/SPCNGS
	IF(SPCNGT.NE.0)TD=100/SPCNGT
	
c Set number of imaginary boreholes. For detailed statistical studies
c this number should be increased.
c Reduce the number of locations if the user chose speed over precision.
	IF(IGRDSP.GE.5) nbores=6
	IF(IGRDSP.EQ.4) nbores=10
	IF(IGRDSP.EQ.2) nbores=16
	IF(IGRDSP.EQ.1) nbores=24

c Reduce the number of locations if bedforms are two-dimensional and
c if they migrate.
	IF((SPCNGS.EQ.0).AND.(VELOCF.NE.0).AND.(SNMGF1.EQ.0))nbores=4
	
c Choose locations of vertical profile arrays. For each imaginary borehole,
c 5 points are chosen: one corner point, 2 nearby points (0.02 units away,
c used to calculate orientations of foresets), and two points farther from 
c the corner point.  By using nearby points to calculate orientations of 
c foresets, scatter caused by surface curvature is minimized.  In contrast, 
c scatter of orientations calculated for bounding surfaces increases if the 
c spacing of the points is too close.  This scatter results because bounding 
c surfaces do not form at the same time at all locations.  As a result, 
c bounding-surface elevation cannot be calculated but instead must be 
c determined by storing the bed elevation at discrete intervals through time 
c and correlating erosional events between the vertical arrays.  The errors 
c introduced by this procedure can be minimized by two techniques: 
c increasing the spacing between the points and increasing the number of 
c calculations of the bed elevation.  Increasing the spacing too much 
c introduces errors due to curvature and increases the possibility of 
c mismatching bounding surfaces between vertical arrays; 
c increasing the number of calculations of bedform topography increases the 
c computation time. The values chosen here were arrived at by trial-and-error.

c Specify x and y locations of imaginary boreholes. (Specified locations
c are arranged in a 90-unit diameter circle centered over the structures 
c displayed in the block diagrams showing the bedforms).
	DO 5, bore= 1,nbores
	  XLOC(bore,1)= sin(2*pi*bore/nbores)*45.0
	  YLOC(bore,1)= cos(2*pi*bore/nbores)*45.0
5       continue

c Set spacing of points for calculating cross-bed orientations.
	dxb=0.02
c Set spacing of points for calculating bounding-surface orientations.
	dbs=.1
	DO 10, bore=1,nbores
	  XLOC(bore,2)=XLOC(bore,1)
	  XLOC(bore,3)=XLOC(bore,1)+dxb
	  XLOC(bore,4)=XLOC(bore,1)
	  XLOC(bore,5)=XLOC(bore,1)+dbs
	  YLOC(bore,2)=YLOC(bore,1)+dxb
	  YLOC(bore,3)=YLOC(bore,1)
	  YLOC(bore,4)=YLOC(bore,1)+dbs
	  YLOC(bore,5)=YLOC(bore,1)
10      continue

c Initialize arrays for storing rose-diagram data.
	DO 20, N=-18,18
	  XBROSE(N)=0
	  BSROSE(N)=0
20      continue

c All plotting by this program is performed by calls to 4 plotting 
c subroutines: PLOTS, PLOT, FACTOR, and SYMBOL (CalComp library or 
c equivalent).  The first call must be to PLOTS, which initializes 
c plotting; LDEV is an integer that represents the output device.
c The PLOT subroutine is used to draw all lines in this program.  PLOT 
c moves the pen to a new position on the page.  Coordinates of the new
c position (in inches) are specified by the first two arguments 
c (x=5.1; y=2.1).  The third argument determines whether the pen is up 
c (3) or down (2).  If the sign of this argument is negative, a new origin 
c is defined at the specified point.  To end plotting, the third argument 
c must be specified to be 999.  FACTOR changes the scale of the plot in 
c proportion to the specified value.  In this case, the size is reduced by 
c a factor of 0.047).
	
c Add main loop to reduce memory requirements.
	DO 190, bore= 1, nbores
	  if(fulldisk) RETURN
	  DO 90, N=0, (NBEDSH+FRMNUM)

	    TIME=REAL(FRMNUM-N)
c Calculate the amount of depostion for the specified time.
	    DPOSIT=DEPRAT*TIME+DEPCHG*(-DEPPRD/(2*pi))*
     &      cos(((DEPFAZ-90)*2*pi/360)+(TIME*2*pi/DEPPRD))
c Calculate bedform asymmetry.
	    PROFF=((1-SMTRYF)+SMCHGF*sin(((-TIME/SMPRDF)-SMFAZF/360)*pi*
     &      2.0))*pi/2.0
	    PROFS=((1-SMTRYS)+SMCHGS*sin(((-TIME/SMPRDS)-SMFAZS/360)*pi*
     &      2.0))*pi/2.0
	    PROFT=((1-SMTRYT)+SMCHGT*sin(((-TIME/SMPRDT)-SMFAZT/360)*pi*
     &      2.0))*pi/2.0
c Calculate bedform size.
	    sizef=HTRTOF+(HTCHGF*sin(((TIME/HTPRDF)*2*pi)+((HTFAZF-90)*
     &      2*pi/360.0)))
	    sizes=HTRTOS+(HTCHGS*sin(((TIME/HTPRDS)*2*pi)+((HTFAZS-90)*
     &      2*pi/360.0)))
	    sizet=HTRTOT+(HTCHGT*sin(((TIME/HTPRDT)*2*pi)+((HTFAZT-90)*
     &      2*pi/360.0)))
c Calculate bedform displacement.
	    dispfd=VELOCF*TIME+VLCHGF*(-VLPRDF/(2*pi))*
     &      cos(((VLFAZF-90)*2*pi/360)+(TIME*2*pi/VLPRDF))
	    dispsd=VELOCS*TIME+VLCHGS*(-VLPRDS/(2*pi))*
     &      cos(((VLFAZS-90)*2*pi/360)+(TIME*2*pi/VLPRDS))
	    disptd=VELOCT*TIME+VLCHGT*(-VLPRDT/(2*pi))*
     &      cos(((VLFAZT-90)*2*pi/360)+(TIME*2*pi/VLPRDT))

	    DO 40, IC=1,5
	      x=XLOC(bore,IC)
	      y=YLOC(bore,IC)
c Calculate bedform elevation for at the specified location.
	      yfd=x*sin(TRENDF*2*pi/360)+y*cos(TRENDF*2*pi/360)
	      ysd=x*sin(TRENDS*2*pi/360)+y*cos(TRENDS*2*pi/360)
	      ytd=x*sin(TRENDT*2*pi/360)+y*cos(TRENDT*2*pi/360)
	      xfd=(x*cos(TRENDF*2*pi/360)-y*sin(TRENDF*2*pi/360)-
     &          dispfd-SPCNGF*PHASEF/360)-(SNMGF1*sin((yfd*2*pi/SNSPF1)+
     &          ((SNFZF1*2*pi/360)+(TIME*SNVLF1*2*pi/SNSPF1))))-
     &          (SNMGF2*sin((yfd*2*pi/SNSPF2)+((SNFZF2*2*pi/360)+
     &          (TIME*SNVLF2*2*pi/SNSPF2))))
	      xsd=(x*cos(TRENDS*2*pi/360)-y*sin(TRENDS*2*pi/360)-
     &          dispsd-SPCNGS*PHASES/360)-(SNMGS1*sin((ysd*2*pi/SNSPS1)+
     &          ((SNFZS1*2*pi/360)+(TIME*SNVLS1*2*pi/SNSPS1))))-
     &          (SNMGS2*sin((ysd*2*pi/SNSPS2)+((SNFZS2*2*pi/360)+
     &          (TIME*SNVLS2*2*pi/SNSPS2))))
	      xtd=(x*cos(TRENDT*2*pi/360)-y*sin(TRENDT*2*pi/360)-
     &          disptd-SPCNGT*PHASET/360)-(SNMGT1*sin((ytd*2*pi/SNSPT1)+
     &          ((SNFZT1*2*pi/360)+(TIME*SNVLT1*2*pi/SNSPT1))))-
     &          (SNMGT2*sin((ytd*2*pi/SNSPT2)+((SNFZT2*2*pi/360)+
     &          (TIME*SNVLT2*2*pi/SNSPT2))))

c Perform bedform superpositioning.
	      IF((TYPE.EQ.1).OR.(TYPE.EQ.2).OR.(TYPE.EQ.4).OR.
     &        (TYPE.EQ.6))THEN
		zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+
     &          PROFF)/FD)
		IF(TYPE.EQ.1)shape=1
		IF((TYPE.EQ.2).OR.(TYPE.EQ.6))THEN
		  shape=((7.5/FD)-zfd)/(15/FD)
		ENDIF
		IF(TYPE.EQ.4)shape=1-((7.5/FD)-zfd)/(15/FD)
		zfd=zfd*sizef
		zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &          PROFS)/SD)*shape*sizes
		IF(TYPE.EQ.6)shape=1
		ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     &          PROFT)/TD)*shape*sizet
		ZZ(N,IC)=zfd+zsd+ztd+DPOSIT
		IF(ZZ(N,IC).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*
     &          ELVMIN+DPOSIT)THEN
		  ZZ(N,IC)=((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+DPOSIT
		ENDIF
	      ENDIF

	      IF(TYPE.EQ.3)THEN
		zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+
     &          PROFF)/FD+7.5/FD)*sizef
		zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &          PROFS)/SD+7.5/SD)*sizes
		ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     &          PROFT)/TD+7.5/TD)*sizet
		ZZ(N,IC)=zfd
		IF(zsd.gt.ZZ(N,IC))  ZZ(N,IC)=zsd
		IF(ztd.gt.ZZ(N,IC))  ZZ(N,IC)=ztd
		ZZ(N,IC)=  ZZ(N,IC)+DPOSIT
		IF(ZZ(N,IC).LT.7.5*(1+ELVMIN)/BD+DPOSIT)THEN
		  ZZ(N,IC)=   7.5*(1+ELVMIN)/BD+DPOSIT
		ENDIF
	      ENDIF

	      IF (TYPE.EQ.5) THEN
		zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/25)+
     &          PROFF)/FD)*sizef
		zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/25)+
     &          PROFS)/SD+7.5/SD)*sizes
		ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/25)+
     &          PROFT)/TD+7.5/TD)*sizet
		ZZ(N,IC)=zfd+MAX(zsd, ztd)+DPOSIT
		IF(ZZ(N,IC).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+
     &          DPOSIT) ZZ(N,IC)=((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+
     &          DPOSIT   
	      ENDIF
		
40          continue
90        continue

	  IF (bore.EQ.1) THEN
c See comments following statement 20 for discussion of plotting
c subroutines.
c For CALCOMP plotting.
	    IF(output.EQ.5) THEN
	      call rplot (5.3, 5.5, -3)
	      CALL rfactor (0.62)
c For screen plotting.
	    ELSEIF(output.EQ.1) THEN
	      xplot= 5.7*resize
	      yplot= (5.85*resize)+(1.0-resize)*8.0
	      call rplot(xplot, yplot, -3)
	      CALL rfactor(0.7*resize)
c For Postscript plotting.
	    ELSEIF(output.eq.2) THEN
	      call rplot (5.3, 5.5, -3)
	      CALL rfactor (0.62*resize)
c For Illustrator 1.1 files.
	    ELSEIF(output.eq.3) THEN
	      call rplot (5.1, 5.0, -3)
	      CALL rfactor (0.62*resize)
	    ENDIF
	    call rplot (-2.0, 0.0, 3)
	    call rplot (2.0, 0.0, 2)
	    call rplot (0.0, -2.0, 3)
	    call rplot (0.0, 2.0, 2)
	    SCALE1= '0'
	    SCALE2= '90'
	    SCALE3= '180'
	    SCALE4= '270'
c SYMBOL is a subroutine that is used to plot text and symbols.  The first
c argument is the x-location on the page, the second is the y-location, the
c third is the height of the letters (in inches, before the size is reduced 
c by FACTOR), the fourth is the character variable to be plotted, the fifth
c is the angular rotation of the text (0.0 for normal upright text), and the 
c final argument is the integer number of characters to be plotted.
	    CALL symbol (-0.074, 2.1, 0.20, SCALE1, 0.0, 1)
	    CALL symbol (2.1, -0.07, 0.20, SCALE2, 0.0, 2)
	    IF(output.eq.1)THEN
	      CALL symbol (-0.22, -2.35, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (-2.58, -0.07, 0.20, SCALE4, 0.0, 3)
	    ELSE
	      CALL symbol (-0.22, -2.25, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (-2.5, -0.07, 0.20, SCALE4, 0.0, 3)
	    ENDIF
	    LGND1= 'CROSS-BEDS'
	    IF(output.eq.1) THEN
	      CALL symbol (-1.1, 2.63, 0.2, LGND1, 0.0, 10)
	    ELSE
	      CALL symbol (-1.1, 2.85, 0.2, LGND1, 0.0, 10)
	    ENDIF
	  ENDIF
	
c Initialize variables.
	  DO 91, IC=1,5
	    ZZmin(IC)= ZZ(0,IC)
91        continue

	  DO 95, N=1, NBEDSH+FRMNUM-1
	    IF((ZZ(N,1).LT.ZZmin(1))
     &      .AND.(ZZ(N,1).GT.ZZ(N+1,1))
     &      .AND.(ZZ(N,2).LT.ZZmin(2))
     &      .AND.(ZZ(N,2).GT.ZZ(N+1,2))
     &      .AND.(ZZ(N,3).LT.ZZmin(3))
     &      .AND.(ZZ(N,3).GT.ZZ(N+1,3)))THEN

c Plot cross-bed defined by ZZ(N,1), ZZ(N,2), and ZZ(N,3).
	      A=ZZ(N,1)-ZZ(N,2)
	      B=ZZ(N,1)-ZZ(N,3)
	      IF(ABS(A).LT..000001)THEN
		IF(A.LT.0) A=A-0.00001
		IF(A.GE.0) A=A+0.00001
	      ENDIF
	      IF(ABS(B).LT..000001)THEN
		IF(B.LT.0)B=B-0.00001
		IF(B.GE.0)B=B+0.00001
	      ENDIF

	      xint=ZZ(N,1)*dxb/B
	      yint=ZZ(N,1)*dxb/A
	      IF(ABS(xint).LT..000001)THEN
		IF(xint.LT.0)xint=xint-0.00001
		IF(xint.GE.0)xint=xint+0.00001
	      ENDIF
	      IF(ABS(yint).LT..000001)THEN
		IF(yint.LT.0)yint=yint-0.00001
		IF(yint.GE.0)yint=yint+0.00001
	      ENDIF
	      xpt=yint/((xint/yint)+(yint/xint))
	      ypt=xint/((xint/yint)+(yint/xint))
	      d=SQRT((xpt**2)+(ypt**2))
	      IF(d.LT..000001)THEN
		d=d+0.00001
	      ENDIF
	      DIP=atan(ZZ(N,1)/d)*360/(2*pi)
c In the following two equations, the first term is a reduction scale 
c for plot, and x and y are rotated 90 degrees clockwise to conform to
c orientation of the dunes program.
	      xplot=-0.06*DIP*ypt/d
	      yplot= 0.06*DIP*xpt/d
	      call rplot(xplot-0.06,yplot,3)
	      call rplot(xplot+0.06,yplot,2)
	      call rplot(xplot,yplot-0.06,3)
	      call rplot(xplot,yplot+0.06,2)
	      
	      azmth=atan2(xplot,yplot)*360/(2*pi)
	      XBROSE(NINT((azmth)/10))=XBROSE(NINT((azmth)/10))+
     &        SQRT((xplot**2)+(yplot**2))
	    ENDIF
	    
	    DO 95, IC=1,3
	      ZZmin(IC)= MIN(ZZmin(IC), ZZ(N,IC))
95        continue 

	  DO 96, IC=1,5
	    BSCNT(IC)=0
	    ZZmin(IC)= ZZ(0,IC)
96        continue
	  
	  DO 110, N=1, NBEDSH+FRMNUM-1

c Test for bounding surfaces that occur in vertical arrays (ZZ), count 
c those bounding surfaces, store the count in BSCNT, and store the 
c elevations of the bounding surfaces in ZBS.
	    DO 105, IC=1,5
	      IF((IC.NE.2).AND.(IC.NE.3)) THEN
		IF((ZZ(N,IC).LE.ZZmin(IC)).AND.
     &          (ZZ(N,IC).LT.ZZ(N+1,IC)))THEN
     
		  ZZZmin(IC)= ZZ(N,IC)

c To reduce scatter in bounding-surface dips, the distance that bedforms 
c during each time intervals is reduced by reducing the length of the 
c time intervals.
		  DO 100, NN= -9, 9
		    TIME=REAL(FRMNUM)-(REAL(N)+REAL(NN)/10.0)
c Calculate the amount of depostion for the specified time.
		    DPOSIT=DEPRAT*TIME+DEPCHG*(-DEPPRD/(2*pi))*
     &              cos(((DEPFAZ-90)*2*pi/360)+(TIME*2*pi/DEPPRD))
c Calculate bedform asymmetry.
		    PROFF=((1-SMTRYF)+SMCHGF*sin(((-TIME/SMPRDF)-
     &              SMFAZF/360)*pi*2.0))*pi/2.0
		    PROFS=((1-SMTRYS)+SMCHGS*sin(((-TIME/SMPRDS)-
     &              SMFAZS/360)*pi*2.0))*pi/2.0
		    PROFT=((1-SMTRYT)+SMCHGT*sin(((-TIME/SMPRDT)-
     &              SMFAZT/360)*pi*2.0))*pi/2.0
c Calculate bedform size.
		    sizef=HTRTOF+(HTCHGF*sin(((TIME/HTPRDF)*2*pi)+
     &              ((HTFAZF-90)*2*pi/360.0)))
		    sizes=HTRTOS+(HTCHGS*sin(((TIME/HTPRDS)*2*pi)+     
     &              ((HTFAZS-90)*2*pi/360.0)))
		    sizet=HTRTOT+(HTCHGT*sin(((TIME/HTPRDT)*2*pi)+
     &              ((HTFAZT-90)*2*pi/360.0)))
c Calculate bedform displacement.
		    dispfd=VELOCF*TIME+VLCHGF*(-VLPRDF/(2*pi))*
     &              cos(((VLFAZF-90)*2*pi/360)+(TIME*2*pi/VLPRDF))
		    dispsd=VELOCS*TIME+VLCHGS*(-VLPRDS/(2*pi))*
     &              cos(((VLFAZS-90)*2*pi/360)+(TIME*2*pi/VLPRDS))
		    disptd=VELOCT*TIME+VLCHGT*(-VLPRDT/(2*pi))*
     &              cos(((VLFAZT-90)*2*pi/360)+(TIME*2*pi/VLPRDT))

		    x=XLOC(bore,IC)
		    y=YLOC(bore,IC)
c Calculate bedform elevation for at the specified location.
		    yfd=x*sin(TRENDF*2*pi/360)+y*cos(TRENDF*2*pi/360)
		    ysd=x*sin(TRENDS*2*pi/360)+y*cos(TRENDS*2*pi/360)
		    ytd=x*sin(TRENDT*2*pi/360)+y*cos(TRENDT*2*pi/360)
		    xfd=(x*cos(TRENDF*2*pi/360)-y*sin(TRENDF*2*pi/360)-
     &              dispfd-SPCNGF*PHASEF/360)-(SNMGF1*sin((yfd*2*pi/
     &              SNSPF1)+((SNFZF1*2*pi/360)+(TIME*SNVLF1*2*pi/SNSPF1)
     &              )))-(SNMGF2*sin((yfd*2*pi/SNSPF2)+((SNFZF2*2*pi/360)
     &              +(TIME*SNVLF2*2*pi/SNSPF2))))
		    xsd=(x*cos(TRENDS*2*pi/360)-y*sin(TRENDS*2*pi/360)-
     &              dispsd-SPCNGS*PHASES/360)-(SNMGS1*sin((ysd*2*pi/
     &              SNSPS1)+((SNFZS1*2*pi/360)+(TIME*SNVLS1*2*pi/SNSPS1)
     &              )))-(SNMGS2*sin((ysd*2*pi/SNSPS2)+((SNFZS2*2*pi/360)
     &              +(TIME*SNVLS2*2*pi/SNSPS2))))
		    xtd=(x*cos(TRENDT*2*pi/360)-y*sin(TRENDT*2*pi/360)-
     &              disptd-SPCNGT*PHASET/360)-(SNMGT1*sin((ytd*2*pi/
     &              SNSPT1)+((SNFZT1*2*pi/360)+(TIME*SNVLT1*2*pi/SNSPT1)
     &              )))-(SNMGT2*sin((ytd*2*pi/SNSPT2)+((SNFZT2*2*pi/360)
     &              +(TIME*SNVLT2*2*pi/SNSPT2))))
				
c Perform bedform superpositioning.
		    IF((TYPE.EQ.1).OR.(TYPE.EQ.2).OR.(TYPE.EQ.4).OR.
     &              (TYPE.EQ.6))THEN
		      zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/
     &                25)+PROFF)/FD)
		      IF(TYPE.EQ.1)shape=1
		      IF((TYPE.EQ.2).OR.(TYPE.EQ.6))THEN
			shape=((7.5/FD)-zfd)/(15/FD)
		      ENDIF
		      IF(TYPE.EQ.4)shape=1-((7.5/FD)-zfd)/(15/FD)
		      zfd=zfd*sizef
		      zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/
     &                25)+PROFS)/SD)*shape*sizes
		      IF(TYPE.EQ.6)shape=1
		      ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/
     &                25)+PROFT)/TD)*shape*sizet
		      ZZZ(NN)=zfd+zsd+ztd+DPOSIT
		      IF(ZZZ(NN).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*
     &                ELVMIN+DPOSIT)THEN
		       ZZZ(NN)=((7.5/FD)+(7.5/SD)+(7.5/TD))*
     &                 ELVMIN+DPOSIT
		      ENDIF
		    ENDIF
		      
		    IF(TYPE.EQ.3)THEN
		      zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/
     &                25)+PROFF)/FD+7.5/FD)*sizef
		      zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/
     &                25)+PROFS)/SD+7.5/SD)*sizes
		      ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/
     &                25)+PROFT)/TD+7.5/TD)*sizet
		      ZZZ(NN)=zfd
		      IF(zsd.gt.ZZZ(NN))  ZZZ(NN)=zsd
		      IF(ztd.gt.ZZZ(NN))  ZZZ(NN)=ztd
		      ZZZ(NN)=  ZZZ(NN)+DPOSIT
		      IF(ZZZ(NN).LT.7.5*(1+ELVMIN)/BD+DPOSIT)THEN
			ZZZ(NN)=   7.5*(1+ELVMIN)/BD+DPOSIT
		      ENDIF
		    ENDIF

		    IF (TYPE.EQ.5) THEN
		      zfd=(-6*sin(xfd*FD*pi/50)/FD-1.5*sin((xfd*FD*pi/
     &                25)+PROFF)/FD)*sizef
		      zsd=(-6*sin(xsd*SD*pi/50)/SD-1.5*sin((xsd*SD*pi/
     &                25)+PROFS)/SD+7.5/SD)*sizes
		      ztd=(-6*sin(xtd*TD*pi/50)/TD-1.5*sin((xtd*TD*pi/
     &                25)+PROFT)/TD+7.5/TD)*sizet
		      ZZZ(NN)=zfd+MAX(zsd, ztd)+DPOSIT
		      IF(ZZZ(NN).LT.((7.5/FD)+(7.5/SD)+(7.5/TD))*ELVMIN+
     &                DPOSIT) ZZZ(NN)=((7.5/FD)+(7.5/SD)+(7.5/TD))*
     &                ELVMIN+DPOSIT   
		    ENDIF
		
		   IF(ZZZ(NN).lt.ZZZmin(IC)) ZZZmin(IC)= ZZZ(NN)
		  
100              continue

		 BSCNT(IC)=BSCNT(IC)+1
		 ID=BSCNT(IC)
		 ZBS(IC,ID)=ZZZmin(IC)
		  
		ENDIF
	      ENDIF
	      ZZmin(IC)= MIN(ZZmin(IC), ZZ(N,IC))
	      
105         continue
110       continue
		  
	
	  IF(output.eq.1)THEN
	    xoffst=  0.0
	    yoffst= -5.1
	  ELSE
	    xoffst=  0.0
	    yoffst= -5.2
	  ENDIF
	  IF(bore.EQ.nbores)THEN
c Plot cross-bed rose diagram.
	    call rplot (-2.0, yoffst, 3)
	    call rplot (2.0, yoffst, 2)
	    call rplot (0.0, yoffst-2.0, 3)
	    call rplot (0.0, yoffst+2.0, 2)
	    CALL symbol (-0.074, yoffst+2.1, 0.20, SCALE1, 0.0, 1)
	    CALL symbol (2.1, yoffst-0.07, 0.20, SCALE2, 0.0, 2)
	    IF(output.eq.1)THEN
	      CALL symbol (-0.22, yoffst-2.35, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (-2.58, yoffst-0.07, 0.20, SCALE4, 0.0, 3)
	    ELSE
	      CALL symbol (-0.22, yoffst-2.25, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (-2.5, yoffst-0.07, 0.20, SCALE4, 0.0, 3)
	    ENDIF
	    call rplot (0.0, yoffst, 3)
		
	    azmax=0
	    XBROSE(18)=XBROSE(18)+XBROSE(-18)
	    DO 122, N=-17,18
	      IF (XBROSE(N).GT.azmax) azmax=XBROSE(N)
122         continue

	    IF(azmax.GT.0)THEN
	      xplot=2*sin((-17.5)*pi/18)*XBROSE(18)/azmax
	      yplot=2*cos((-17.5)*pi/18)*XBROSE(18)/azmax
	      call rplot (xplot, yoffst+yplot, 3)
	      DO 124, N=-17,18
		xplot=2*sin(((N-0.5))*pi/18)*XBROSE(N)/azmax
		yplot=2*cos(((N-0.5))*pi/18)*XBROSE(N)/azmax
		call rplot (xplot, yoffst+yplot, 2)
		xplot=2*sin((N+.5)*pi/18)*XBROSE(N)/azmax
		yplot=2*cos((N+.5)*pi/18)*XBROSE(N)/azmax
		call rplot (xplot, yoffst+yplot, 2)
124           continue
	      call rplot (0.0, yoffst, 3)
	    ENDIF
	  ENDIF

	  IF(output.eq.1)THEN
	    xoffst= 5.4
	    yoffst= 0.0
	  ELSE
	    xoffst= 5.4
	    yoffst= 0.0
	  ENDIF

	  IF(bore.EQ.1)THEN
c Plot bounding surfaces axes.
	    call rplot (xoffst-2.0, 0.0, 3)
	    call rplot (xoffst+2.0, 0.0, 2)
	    call rplot (xoffst+0.0, -2.0, 3)
	    call rplot (xoffst+0.0, 2.0, 2)
	    CALL symbol (xoffst-0.074, 2.1,0.20,SCALE1, 0.0, 1)
	    CALL symbol (xoffst+2.1, -0.07, 0.20, SCALE2, 0.0, 2)
	    IF(output.eq.1)THEN
	      CALL symbol (xoffst-0.22, -2.35, 0.20,SCALE3,0.0,3)
	      CALL symbol (xoffst-2.58, -0.07, 0.20,SCALE4,0.0,3)
	    ELSE
	      CALL symbol (xoffst-0.22, -2.25, 0.20,SCALE3,0.0,3)
	      CALL symbol (xoffst-2.5, -0.07, 0.20,SCALE4,0.0,3)
	    ENDIF
	    LGND2= 'BOUNDING SURFACES'
	    IF(output.eq.1) THEN
	      CALL symbol (xoffst-1.80, 2.63, 0.2, LGND2, 0.0, 17)
	    ELSE
	      CALL symbol (xoffst-1.80, 2.85, 0.2, LGND2, 0.0, 17)
	    ENDIF
	  ENDIF
	
	  DO 150, P=1,BSCNT(1)

	    DO 140, Q=1,BSCNT(4)
	      DO 130, R=1,BSCNT(5)
c This complicated IF-test correlates and filters bounding-surface 
c elevations stored in ZBS. Elevation values pass the correlation test if 
c any three values in the three vertical arrays have roughly the same 
c elevation.  Values pass the filter test if no other elevation values have 
c roughly the same elevation.  Values that pass both tests are used to
c solve for the orientation of bounding surfaces and plotted.
c Replace these lines because values of ZBS(n,0) are not defined.
c               IF ((ABS(ZBS(1,P)-ZBS(4,Q)).LT.dbs).AND.
c    &          (ABS(ZBS(1,P)-ZBS(5,R)).LT.dbs).AND.
c    &          (ABS(ZBS(1,P)-ZBS(4,Q-1)).GT.3*dbs).AND.
c    &          (ABS(ZBS(1,P)-ZBS(5,R-1)).GT.3*dbs).AND.
c    &          (ABS(ZBS(1,P)-ZBS(4,Q+1)).GT.3*dbs).AND.
c    &          (ABS(ZBS(1,P)-ZBS(5,R+1)).GT.3*dbs).AND.
c    &          (ZBS(1,P).NE.0).AND.(ZBS(4,Q).NE.0).AND.
c    &          (ZBS(5,R).NE.0))THEN

		IF(ABS(ZBS(1,P)-ZBS(4,Q)).GT.dbs)THEN
c Do not plot as a bounding surface.
		  GO TO 150
		ELSEIF(ABS(ZBS(1,P)-ZBS(5,R)).GT.dbs)THEN
		  GO TO 150
		ELSEIF(P.GT.1.AND.P.LT.BSCNT(1).AND.Q.GT.1.AND.
     &          Q.LT.BSCNT(4).AND.R.GT.1.AND.R.LT.BSCNT(5))THEN
		  IF(ABS(ZBS(1,P)-ZBS(4,Q-1)).LT.3*dbs)THEN
		    GO TO 150
		  ELSEIF(ABS(ZBS(1,P)-ZBS(5,R-1)).LT.3*dbs)THEN
		    GO TO 150
		  ELSEIF(ABS(ZBS(1,P)-ZBS(4,Q+1)).LT.3*dbs)THEN
		    GO TO 150
		  ELSEIF(ABS(ZBS(1,P)-ZBS(5,R+1)).LT.3*dbs)THEN
		    GO TO 150
		  ENDIF
c These tests seem unneccessary; see if operation is ok without them.
c               ELSEIF(ZBS(1,P).EQ.0)THEN
c                 GO TO 150
c               ELSEIF(ZBS(4,Q).EQ.0)THEN
c                 GO TO 150
c               ELSEIF(ZBS(5,R).EQ.0)THEN
c                 GO TO 150
		ENDIF
     
c Plot bounding surface defined by ZBS(1,P), ZBS(4,Q), ZBS(5,R).
		A=ZBS(1,P)-ZBS(4,Q)
		B=ZBS(1,P)-ZBS(5,R)
		IF(ABS(A).LT..000001)THEN
		  IF(A.LT.0)A=A-0.00001
		  IF(A.GE.0)A=A+0.00001
		ENDIF
		IF(ABS(B).LT..000001)THEN
		  IF(B.LT.0)B=B-0.00001
		  IF(B.GE.0)B=B+0.00001
		ENDIF
		xint=ZBS(1,P)*dbs/B
		yint=ZBS(1,P)*dbs/A
		IF(ABS(xint).LT..000001)THEN
		  IF(xint.LT.0)xint=xint-0.00001
		  IF(xint.GE.0)xint=xint+0.00001
		ENDIF
		IF(ABS(yint).LT..000001)THEN
		  IF(yint.LT.0)yint=yint-0.00001
		  IF(yint.GE.0)yint=yint+0.00001
		ENDIF
		xpt=yint/((xint/yint)+(yint/xint))
		ypt=xint/((xint/yint)+(yint/xint))
		d=SQRT((xpt**2)+(ypt**2))
		IF(d.LT..000001)THEN
		  d=d+0.00001
		ENDIF
		DIP=atan(ZBS(1,P)/d)*360/(2*pi)
c In the following two equations, the first term is a reduction scale 
c for plot, and x and y are rotated 90 degrees clockwise to conform to
c orientation of the dunes program.
		xplot=-0.06*DIP*ypt/d
		yplot= 0.06*DIP*xpt/d
		call rplot(xoffst+xplot-0.06,yplot,3)
		call rplot(xoffst+xplot+0.06,yplot,2)
		call rplot(xoffst+xplot,yplot-0.06,3)
		call rplot(xoffst+xplot,yplot+0.06,2)
		azmth=atan2(xplot,yplot)*360/(2*pi)
		BSROSE(NINT((azmth)/10))=BSROSE(NINT((azmth)/10))+
     &          SQRT((xplot**2)+(yplot**2))
     
130           continue
140         continue
150       continue
	  
	
	  IF(output.eq.1)THEN
	    xoffst=  5.4
	    yoffst= -5.1
	  ELSE
	    xoffst=  5.4
	    yoffst= -5.2
	  ENDIF

	  IF(bore.EQ.nbores)THEN
c Plot bounding-surface rose diagram.
	    call rplot (xoffst-2.0, yoffst+0.0, 3)
	    call rplot (xoffst+2.0, yoffst+0.0, 2)
	    call rplot (xoffst, yoffst-2.0, 3)
	    call rplot (xoffst, yoffst+2.0, 2)
	    CALL symbol (xoffst-0.074, yoffst+2.1, 0.20, SCALE1, 0.0, 1)
	    CALL symbol (xoffst+2.1, yoffst-0.07, 0.20, SCALE2, 0.0, 2)
	    IF(output.eq.1)THEN
	      CALL symbol (xoffst-0.22, yoffst-2.35, 0.20, SCALE3,0.0,3)
	      CALL symbol (xoffst-2.58, yoffst-0.07, 0.20, SCALE4,0.0,3)
	    ELSE
	      CALL symbol (xoffst-0.22, yoffst-2.25, 0.20, SCALE3,0.0,3)
	      CALL symbol (xoffst-2.5, yoffst-0.07, 0.20, SCALE4,0.0, 3)
	    ENDIF
	    call rplot (xoffst, yoffst, 3)
	    azmax=0
	    BSROSE(18)=BSROSE(18)+BSROSE(-18)
	    DO 170, N=-17,18
	      IF (BSROSE(N).GT.azmax) azmax=BSROSE(N)
170         continue
	  
	    IF(azmax.GT.0)THEN
	      xplot=2*sin((-17.5)*pi/18)*BSROSE(18)/azmax
	      yplot=2*cos((-17.5)*pi/18)*BSROSE(18)/azmax
	      call rplot (xplot+xoffst, yplot+yoffst, 3)
	      DO 180, N=-17,18
		xplot=2*sin(((N-0.5))*pi/18)*BSROSE(N)/azmax
		yplot=2*cos(((N-0.5))*pi/18)*BSROSE(N)/azmax
		call rplot (xplot+xoffst, yplot+yoffst, 2)
		xplot=2*sin((N+.5)*pi/18)*BSROSE(N)/azmax
		yplot=2*cos((N+.5)*pi/18)*BSROSE(N)/azmax
		call rplot (xplot+xoffst, yplot+yoffst, 2)
180           continue
	      call rplot (xoffst, yoffst, 3)
	    ENDIF
	  ENDIF
			
	  IF(output.eq.1)THEN
	    xoffst= -5.4
	    yoffst= 0.0
	  ELSE
	    xoffst= -5.4
	    yoffst= 0.0
	  ENDIF
	    
	  IF(bore.EQ.nbores)THEN
c Plot directional data.
	    call rplot (xoffst-2.0, 0.0, 3)
	    call rplot (xoffst+2.0, 0.0, 2)
	    call rplot (xoffst+0.0, -2.0, 3)
	    call rplot (xoffst+0.0, 2.0, 2)
	    CALL symbol (xoffst-0.074, 2.1, 0.20, SCALE1, 0.0, 1)
	    CALL symbol (xoffst+2.1, -0.07, 0.20, SCALE2, 0.0, 2)
	    IF(output.eq.1)THEN
	      CALL symbol (xoffst-0.22, -2.35, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (xoffst-2.58, -0.07, 0.20, SCALE4, 0.0, 3)
	    ELSE
	      CALL symbol (xoffst-0.22, -2.25, 0.20, SCALE3, 0.0, 3)
	      CALL symbol (xoffst-2.5, -0.07, 0.20, SCALE4, 0.0, 3)
	    ENDIF
	    LGND3= 'MIGRATION VECTORS'
	    IF(output.eq.1) THEN
	      CALL symbol (xoffst-1.7, 2.63, 0.2, LGND3, 0.0, 17)
	    ELSE
	      CALL symbol (xoffst-1.7, 2.85, 0.2, LGND3, 0.0, 17)
	    ENDIF

c Determine max speed to scale plot.
	    PITSP3=SQRT((VELOCF**2)+(SNVLF1**2))
	    VMAX= MAX(ABS(VELOCF),ABS(VELOCS),ABS(VELOCT),ABS(SNVLF1),
     &      PITSP1,PITSP2,PITSP3)
	    IF(VMAX.EQ.0) reduc=0.0
	    IF(VMAX.GT.0) reduc=2.0/VMAX
	
c Plot main bedform data.
	    xplot=reduc*VELOCF*sin(TRENDF*2.0*pi/360)
	    yplot=reduc*VELOCF*cos(TRENDF*2.0*pi/360)
	    IF(VELOCF.LT.0)TRENDF=TRENDF+180.0
	    CALL triang (xoffst+xplot, yplot, 0.4, TRENDF)
	    call rplot (xoffst, 0.0, 2)

	    IF((SNSPF1.GT.0).AND.(SNMGF1.GT.0).AND.(SNVLF1.NE.0))THEN
	      IF(SNVLF1.GT.0)SINDIR=TRENDF+90
	      IF(SNVLF1.LT.0)SINDIR=TRENDF-90
	      xplot=reduc*(ABS(SNVLF1))*sin(SINDIR*2.0*pi/360)
	      yplot=reduc*(ABS(SNVLF1))*cos(SINDIR*2.0*pi/360)
	      CALL zigzag (xoffst+xplot, yplot, 0.4, SINDIR)
	      call rplot (xoffst, 0.0, 2)
	    ENDIF

c Plot superimposed bedform data.
	    IF((SPCNGS.GT.0).AND.(SPCNGS.LT.SPCNGF).AND.
     &      (HTRTOS.GT.0))THEN
	      xplot=reduc*VELOCS*sin(TRENDS*2.0*pi/360)
	      yplot=reduc*VELOCS*cos(TRENDS*2.0*pi/360)
	      IF(VELOCS.LT.0)TRENDS=TRENDS+180.0
	      CALL triang (xoffst+xplot, yplot, 0.25, TRENDS)
	      call rplot (xoffst, 0.0, 2)
	    ENDIF
	    IF((SPCNGT.GT.0).AND.(SPCNGT.LT.SPCNGF).AND.
     &      (HTRTOT.GT.0))THEN
	      xplot=reduc*VELOCT*sin(TRENDT*2.0*pi/360)
	      yplot=reduc*VELOCT*cos(TRENDT*2.0*pi/360)
	      IF(VELOCT.LT.0)TRENDT=TRENDT+180.0
	      CALL triang (xoffst+xplot, yplot, 0.25, TRENDT)
	      call rplot (xoffst, 0.0, 2)
	    ENDIF

c Plot trough axes.
	    IF((TRENDF.NE.TRENDS).AND.(ABS(TRENDF-TRENDS).NE.180).AND.
     &      (SPCNGS.GT.0).AND.(HTRTOS.GT.0))THEN
	      xplot=reduc*PITSP1*sin(DRMIG1*2.0*pi/360)
	      yplot=reduc*PITSP1*cos(DRMIG1*2.0*pi/360)
	      call rcircle(xoffst+xplot, yplot, 0.08)
	      call rplot (xoffst+xplot, yplot, 3)
	      call rplot (xoffst, 0.0, 2)
	    ENDIF

	    IF((TRENDF.NE.TRENDT).AND.(ABS(TRENDF-TRENDT).NE.180).AND.
     &      (SPCNGT.GT.0).AND.(HTRTOT.GT.0))THEN
	      xplot=reduc*PITSP2*sin(DRMIG2*2.0*pi/360)
	      yplot=reduc*PITSP2*cos(DRMIG2*2.0*pi/360)
	      call rcircle(xoffst+xplot, yplot, 0.08)
	      call rplot (xoffst+xplot, yplot, 3)
	      call rplot (xoffst, 0.0, 2)
	    ENDIF

	    IF((SNMGF1.GT.0).AND.(SNSPF1.GT.0).AND.(SNVLF1.NE.0))THEN
	      IF(VELOCF.NE.0)THEN
		RSLTNT=atan(SNVLF1/VELOCF)*360/(2*pi)
		AXTRND=RSLTNT+TRENDF
		xplot=reduc*PITSP3*sin(AXTRND*2.0*pi/360)
		yplot=reduc*PITSP3*cos(AXTRND*2.0*pi/360)
		call rcircle(xoffst+xplot, yplot, 0.08)
		call rplot (xoffst+xplot, yplot, 3)
		call rplot (xoffst, 0.0, 2)
	      ENDIF
	      IF(VELOCF.EQ.0)THEN
		IF(SNVLF1.LT.0) AXTRND=TRENDF-90.0
		IF(SNVLF1.GT.0) AXTRND=TRENDF+90.0
		xplot=reduc*PITSP3*sin(AXTRND*2.0*pi/360)
		yplot=reduc*PITSP3*cos(AXTRND*2.0*pi/360)
		call rcircle(xoffst+xplot, yplot, 0.08)
		call rplot (xoffst+xplot, yplot, 3)
		call rplot (xoffst, 0.0, 2)
	      ENDIF
	    ENDIF
	  ENDIF
		
	  IF(output.eq.1)THEN
	    xoffst= -5.4
	    yoffst= -5.1
	  ELSE
	    xoffst= -5.4
	    yoffst= -5.2
	  ENDIF
	  
c Draw symbol key.
	  IF(bore.EQ.nbores)THEN
	    call rplot (xoffst-2.2, yoffst+1.4, 3)
	    call rplot (xoffst+2.55, yoffst+1.4, 2)
	    call rplot (xoffst+2.55, yoffst-1.4, 2)
	    call rplot (xoffst-2.2, yoffst-1.4, 2)
	    call rplot (xoffst-2.2, yoffst+1.4, 2)
		
	    CALL triang (xoffst-1.9, yoffst+1.0, 0.4, 0.0)
	    LGND5= 'MAIN BEDFORMS'
	    CALL symbol (xoffst-1.6, yoffst+0.95, 0.20, LGND5, 0.0, 14)

	    CALL triang (xoffst-1.9, yoffst+.33, 0.25, 0.0)
	    LGND6= 'SUPERIMPOSED BEDFORMS'
	    CALL symbol (xoffst-1.6, yoffst+.28, 0.20, LGND6, 0.0, 21)

	    CALL zigzag (xoffst-1.9, yoffst-.33, 0.4, 0.0)
	    LGND7= 'PLAN-FORM SINUOSITIES'
	    CALL symbol (xoffst-1.6, yoffst-.43, 0.20, LGND7, 0.0, 21)

	    CALL rcircle (xoffst-1.9, yoffst-1.0, 0.08)
	    LGND8= 'SCOUR PITS'
	    CALL symbol (xoffst-1.6, yoffst-1.1, 0.20, LGND8, 0.0, 10)
	  ENDIF
190     continue 
200     continue
		
	IF(output.eq.1)THEN
	  xoffst= -5.4
	  yoffst= -5.1
	ELSE
	  xoffst= -5.4
	  yoffst= -5.2
	ENDIF
	  
	IF(FILOG) THEN
	  IF(output.eq.1)THEN
	    CALL symbol (xoffst-2.0, yoffst-2.2, 0.2, FILENM, 0.0, 27)
	  ELSE
	    CALL symbol (xoffst-2.0, yoffst-2.3, 0.2, FILENM, 0.0, 27)
	  ENDIF
	ENDIF

	IF(CAPLOG) THEN
	  IF(output.eq.1)THEN
	    CALL symbol (xoffst-2.0, yoffst-3.0, 0.2, FIGCAP, 0.0, 80)
	  ELSE
	    CALL symbol (xoffst-2.0, yoffst-3.1, 0.2, FIGCAP, 0.0, 80)
	  ENDIF
	ENDIF
c
c       wait for keypress
c
	if (output .eq. 1) key=ixkey()
c        
c       move cursor off screen
c       clear plot
c
	call rplot (-115.0, -40.0, -3)
	call rplot (0.0, 0.0, 999)
	return
	end
C
C********end dips
C
	subroutine triang (xcntr, ycntr, size, angle)        
	real xcntr, ycntr, size, angle        
	real xplot, yplot, pi        
	pi=3.14159              
	xplot=xcntr+(size/2.0)*sin(angle*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos(angle*2.0*pi/360)        
	call rplot (xplot,yplot,3)               
	xplot=xcntr+(size/2.0)*sin((angle-120.0)*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos((angle-120.0)*2.0*pi/360)        
	call rplot (xplot,yplot,2)               
	xplot=xcntr+(size/2.0)*sin((angle+120.0)*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos((angle+120.0)*2.0*pi/360)        
	call rplot (xplot,yplot,2)               
	xplot=xcntr+(size/2.0)*sin(angle*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos(angle*2.0*pi/360)        
	call rplot (xplot,yplot,2)               
	call rplot (xcntr,ycntr,3)              
	return        
	end
c****************        
	subroutine rawcirc (xorg,yorg,rad)
C
C   draw a circle in PostScript for ccps library
C     Rex Sanders, 3/87
C
	include "bedforms.inc"
	common /cqpbnf/ xold, yold, fac, ires
	save   /cqpbnf/
	real            xold, yold, fac
	integer                          ires

C
C   Output "stroke x y radius 0 360 arc stroke"
C

	write(3,801, ERR=888) "stroke"
	write(3,805, ERR=888) (nint (xorg*fac*ires))
	write(3,801, ERR=888) " "
	write(3,805, ERR=888) (nint (yorg*fac*ires))
	write(3,801, ERR=888) " "
	write(3,805, ERR=888) (nint (rad*fac*ires))
	write(3,802, ERR=888) " 0 360 arc stroke"
	call rplot(xorg,yorg,3)

801     format(a,$)
802     format(a)
805     format(i7,$)
	return
888     close(3,status='delete')
	fulldisk=.true.
	end
c
c **** end triang
c        
	subroutine zigzag (xcntr, ycntr, size, angle)                
	real xcntr, ycntr, size, angle        
	real xplot, yplot, pi                
	pi=3.14159        
	call rplot(xcntr,ycntr,3)        
	xplot=xcntr+(size/2.0)*sin(angle*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos(angle*2.0*pi/360)        
	call rplot (xplot,yplot,2)                 
	xplot=xcntr+(size/2.0)*sin((angle-60.0)*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos((angle-60.0)*2.0*pi/360)        
	call rplot (xplot,yplot,2)                 
	xplot=xcntr+(size/2.0)*sin((angle+120.0)*2.0*pi/360)        
	yplot=ycntr+(size/2.0)*cos((angle+120.0)*2.0*pi/360)        
	call rplot (xplot,yplot,2)                 
	xplot=xcntr-(size/2.0)*sin(angle*2.0*pi/360)        
	yplot=ycntr-(size/2.0)*cos(angle*2.0*pi/360)        
	call rplot (xplot,yplot,2)                 
	call rplot(xcntr,ycntr,2)                
	return        
	end
c
c***** end zigzag
c
	subroutine rplots (idum, bios, lun)      
	integer idum, bios, lun         
c        implicit none        
	include "bedforms.inc"             
	IF(output.EQ.1) THEN
c     
	call plots(idum, bios, 17)        
	ELSE
	IF(output.EQ.2) THEN   
	call pltsps(0, 0, 2)  
	ENDIF   
	ENDIF
	return  
	end                     
c ************************************************************************                              
	subroutine pltsps (idum, jdum, kdum)    
	integer           idum, jdum, kdum
C
C   Plotter initialisation routine - must be called before any other plotter
C     calls are made
C
C   Where:
C     idum, jdum, kdum= dummy variables for compatibility
C        
	common /cqpbnf/ xold, yold, fac, ires   
	save   /cqpbnf/ 
	real            xold, yold, fac 
	integer ires  
	logical*1 fulldisk
C
C   Initialise plot storage - 
c
	write(3,802, ERR=888)"%!"
C
C       Scale, rotate and translate PostScript output
C         Units of pixels (300/inch for most laser printers)
C         Origin in lower left corner, landscape mode
C
	write (3,802, ERR=888)"72 300 div dup scale"
	write (3,802, ERR=888)"90 rotate"
	write (3,802, ERR=888)"75 -2460 translate"
	write (3,802, ERR=888)"0 0 moveto"
C
C       Set other line drawing parameters
C
	write (3,802, ERR=888)"1 setlinewidth"
	write (3,802, ERR=888)"1 setlinejoin"
	write (3,802, ERR=888)"1 setlinecap"
C
C      Speed up symbol font handling
c            
	write (3,802)"/SF /Courier findfont def"
c        Use Helvetica instead of Courier.             
	write (3,802, ERR=888)"/SF /Helvetica findfont def"
C
C       Set up definitions for other routines:
C
C          Move
	write (3,802, ERR=888)"/M /moveto load def"
C         Relative Move
	write (3,802, ERR=888)"/RM /rmoveto load def"
C       Draw
	write (3,802, ERR=888)     
     &       "/D {lineto currentpoint stroke moveto} def"
C
C    Special support for dgxplt
	write (3,802, ERR=888)"/L /lineto load def"
C
C         Set new origin
	write (3,802, ERR=888)"/O {currentpoint translate} def"
C
C     Set new linewidth
	write (3,802, ERR=888)     
     &  "/W {currentpoint stroke moveto setlinewidth} def"
C
C      Set character height
	write (3,802, ERR=888)"/H {SF exch scalefont setfont} def"
C
C          Show character string
	write (3,802, ERR=888)"/s /show load def"       
	write (3,802, ERR=888)"/S /stroke load def"     
	write (3,802, ERR=888)"/g /setgray load def"            
	write (3,802, ERR=888)"/F /fill load def"
C
C   Start and end rotated text
	write (3,802, ERR=888)     
     &  "/RS {currentpoint gsave translate rotate} def"      
	write (3,802, ERR=888)"/RE /grestore load def"
c
  802       format(a)
C
C   Initialise common variables
C      
	fac= 1.0        
	xold= 0.0       
	yold= 0.0       
	ires= 300       
	return
  888       fulldisk=.true. 
	return  
	end
c******
	subroutine rplot(x, y, ipen)     
	
c !Note: pathop set to false at end of surfac.f.       
	real             x, y   
	integer                ipen             
c        implicit none   
	include "bedforms.inc"          
	IF(output.EQ.1) THEN
	  call plot(x, y, ipen)       
	ELSE 
	IF(output.EQ.2) THEN          
	call pltps(x, y, ipen)        
	ENDIF           
	endif
	return  
	end                             
c
	subroutine pltps (x, y, ipen)   
C
C  Plotter driver conforming to:
C    "Programming CalComp Electromechanical Plotters", CalComp, January 1976
C    Output for PostScript printers like Apple LaserWriter Plus
C
C  Rex Sanders, USGS, 2/87CC  Where:
C    x,y= coordinates, in inches from the current origin, of the position
C          to which the pen is to be moved
C
C    ipen= pen control, origin definition, and plot termiination such that:
C      if ipen= 1, move with pen in present condition
C      if ipen= 2, move with pen down
C      if ipen= 3, move with pen up
C      if ipen= -1, move with no pen change, reset origin to terminal position
C      if ipen= -2, move with pen down, reset origin to terminal position
C      if ipen= -3, move with pen up, reset origin to terminal position
C      if ipen= 999, move with pen up, terminate plot, close plot file
C      if ipen= anything else, no action is taken
C 
	real             x, y   
	integer                ipen
	common /cqpbnf/ xold, yold, fac, ires   
	save   /cqpbnf/ 
	real            xold, yold, fac 
	integer                          ires           
	integer locpen  
	logical*1 penup, fulldisk
	save    penup   
	data    penup /.true./  
	locpen= abs (ipen)
C
C   Check pen for proper values
C     
	if (locpen.ne.1.and.locpen.ne.2.and.locpen.ne.3.and.
     & ipen .ne. 999) return
C
C   Reset locpen to current pen status
C     
	if (locpen .eq. 1) then        
	if (penup) then             
	locpen= 3           
		else                
		locpen= 2           
	endif       
	endif
C
C   Set up for move or draw
C     Output "x y"C
c       call pliout (nint (x * fac * ires))     
	write(3,805, ERR=888) (nint (x * fac * ires))
c       call plcout (32)        
	write(3,801, ERR=888) " "
  801    format (a,$)
c       call pliout (nint (y * fac * ires))     
	write(3,805, ERR=888) (nint (y * fac * ires))
C
C   Pen down - draw
C      
	if (locpen .eq. 2) then
	write (3,802, ERR=888) " D"     
	penup= .false.
C
C   Pen up - move
C   
       else 
	if (locpen .eq. 3 .or. locpen .eq. 999) then
	  write (3,802, ERR=888) " M"     
	  penup= .true.       
	  endif   
	endif
	if (ipen .ge. 0) then       
	xold= x         
	yold= y     
	else
C
C  Set new origin
C       call plsout ("O\n")     
	write (3,802, ERR=888) "O"      
	xold= 0.0       
	yold= 0.0   
	endif
C
C   Close and clean up plot file
C 
	if (ipen .eq. 999) then
	write (3,802, ERR=888)"showpage"
c       
	close(3)    
	endif           
  802     format(a)
  805    format (i7,$)   
	 return
  888       
	close(3,status='delete')        
	fulldisk=.true. 
	return  
	end                                             
C***************        
	subroutine rcircle(x,y,radius)    
	real  x,y, radius 
	include "bedforms.inc"             
	IF(output.EQ.1) THEN
c          
	  call circle (x,y,radius)     
	ELSE IF(output.EQ.2) THEN          
	 call rawcirc (x,y,radius)        
	ENDIF   
	return  
	end                                     
c****
	subroutine rfactor(f)    
	real             f              
	include "bedforms.inc"             
	IF(output.EQ.1) THEN
c          
	  call factor (f)     
	ELSE IF(output.EQ.2) THEN          
	  call facps (f)        
	ENDIF   
	return  
	end                                     
	subroutine facps (f)    
	real f
C
C  sets plot sizing factor -
C    if f= 2.0 then all subsequent pen movements will be twice normal size
C    if f is reset to 1.0, all plotting returns to normal size
C    
	common /cqpbnf/ xold, yold, fac, ires   
	save   /cqpbnf/ 
	real            xold, yold, fac 
	integer                          ires   
	fac= f  
	return  
	end     
c************************************************************        
	subroutine symbol (xin, yin, ht, strin, ang, nchin)             
	real               xin, yin, ht,        ang     
	integer*4   nchin             
	character*1 strin(80)
	include "bedforms.inc"                  
	IF(output.EQ.1) THEN
	call hershy(xin, yin, ht, strin, ang, nchin)
	ELSEIF(output.EQ.2)THEN   
	call hershy(xin, yin, ht, strin, ang, nchin)  
	continue
	endif   
	return  
	end                     
C************************************************************
	subroutine hershy(xin, yin, height, text, theta, ntext)
	real              xin, yin, height,       theta
	character*1    text(80)
	integer        ntext
*
*   hershy - Calcomp "symbol" equivalent, using NBS/Hershey/Simplex Roman
*     character set.
*
*   Rex Sanders, USGS Pacific Marine Geology, September 1988
*     Many symbols in the Hershey set were added or modified.
*     This subroutine implements the Calcomp "symbol" subroutine using only
*     calls to "plot" with IPEN values of 2 or 3.
*
*   Rex Sanders, USGS Pacific Marine Geology, August 1992
*     Fixed bug in single-character plotting on Sun4 systems
*
*   Written and tested in standard FORTRAN 77.
*     This version uses Unix "rshift" and "and" functions
*   NOTE: See changes marked VAX and SUN below
*
*   XIN, YIN are the coordinates in inches from the current origin to the
*     lower left corner of the first character to be plotted.
*     If either is set to 999.0, then the current pen location is used.
*
*   HEIGHT is the character height in inches.
*
*   TEXT is a character string containing the text to be plotted.
*
*   THETA is the angle in degrees positive counter-clockwise from the X-axis
*     at which the text will be plotted.
*
*   NTEXT is the number of characters in ITEXT to plot:
*
*     If NTEXT < -1, the pen is down to XIN, YIN and a single special centered
*       symbol is plotted.
*
*     If NTEXT = -1, the pen is up to XIN, YIN and a single special centered
*       symbol is plotted.
*
*     If NTEXT = 0, a single character from ITEXT is plotted.
*
*     If NTEXT > 0, NTEXT characters from ITEXT are plotted.
*

	real x, y, cosa, sina, dum1, dum2
	integer jchar, i, n, inteq

	character*1  hold(4)
	integer*1            ihold(4)
c        equivalence (hold, ihold)

	integer xsym(1023), ysym(1023), psym(1023), lsym(0:127,2)
	integer xcen(111), ycen(111), pcen(111), lcen(0:14,2)
	save xsym, ysym, psym, lsym, xcen, ycen, pcen, lcen
C
C Symbol definition tables
C

C   0
       data lsym(  0,1) /   1/, lsym(  0,2) / 0/
C   1
       data lsym(  1,1) /   1/, lsym(  1,2) / 0/
C   2
       data lsym(  2,1) /   1/, lsym(  2,2) / 0/
C   3
       data lsym(  3,1) /   1/, lsym(  3,2) / 0/
C   4
       data lsym(  4,1) /   1/, lsym(  4,2) / 0/
C   5
       data lsym(  5,1) /   1/, lsym(  5,2) / 0/
C   6
       data lsym(  6,1) /   1/, lsym(  6,2) / 0/
C   7
       data lsym(  7,1) /   1/, lsym(  7,2) / 0/
C   8
       data lsym(  8,1) /   1/, lsym(  8,2) / 0/
C   9
       data lsym(  9,1) /   1/, lsym(  9,2) / 0/
C  10
       data lsym( 10,1) /   1/, lsym( 10,2) / 0/
C  11
       data lsym( 11,1) /   1/, lsym( 11,2) / 0/
C  12
       data lsym( 12,1) /   1/, lsym( 12,2) / 0/
C  13
       data lsym( 13,1) /   1/, lsym( 13,2) / 0/
C  14
       data lsym( 14,1) /   1/, lsym( 14,2) / 0/
C  15
       data lsym( 15,1) /   1/, lsym( 15,2) / 0/
C  16
       data lsym( 16,1) /   1/, lsym( 16,2) / 0/
C  17
       data lsym( 17,1) /   1/, lsym( 17,2) / 0/
C  18
       data lsym( 18,1) /   1/, lsym( 18,2) / 0/
C  19
       data lsym( 19,1) /   1/, lsym( 19,2) / 0/
C  20
       data lsym( 20,1) /   1/, lsym( 20,2) / 0/
C  21
       data lsym( 21,1) /   1/, lsym( 21,2) / 0/
C  22
       data lsym( 22,1) /   1/, lsym( 22,2) / 0/
C  23
       data lsym( 23,1) /   1/, lsym( 23,2) / 0/
C  24
       data lsym( 24,1) /   1/, lsym( 24,2) / 0/
C  25
       data lsym( 25,1) /   1/, lsym( 25,2) / 0/
C  26
       data lsym( 26,1) /   1/, lsym( 26,2) / 0/
C  27
       data lsym( 27,1) /   1/, lsym( 27,2) / 0/
C  28
       data lsym( 28,1) /   1/, lsym( 28,2) / 0/
C  29
       data lsym( 29,1) /   1/, lsym( 29,2) / 0/
C  30
       data lsym( 30,1) /   1/, lsym( 30,2) / 0/
C  31
       data lsym( 31,1) /   1/, lsym( 31,2) / 0/
C  32
       data lsym( 32,1) /   1/, lsym( 32,2) / 0/
C  33 "!"
       data lsym( 33,1) /   1/, lsym( 33,2) /12/
       data xsym(   1) / 11/, ysym(   1) / 21/, psym(   1) /3/
       data xsym(   2) / 10/, ysym(   2) / 19/, psym(   2) /2/
       data xsym(   3) / 11/, ysym(   3) /  7/, psym(   3) /2/
       data xsym(   4) / 12/, ysym(   4) / 19/, psym(   4) /2/
       data xsym(   5) / 11/, ysym(   5) / 21/, psym(   5) /2/
       data xsym(   6) / 11/, ysym(   6) / 19/, psym(   6) /3/
       data xsym(   7) / 11/, ysym(   7) / 13/, psym(   7) /2/
       data xsym(   8) / 11/, ysym(   8) /  2/, psym(   8) /3/
       data xsym(   9) / 10/, ysym(   9) /  1/, psym(   9) /2/
       data xsym(  10) / 11/, ysym(  10) /  0/, psym(  10) /2/
       data xsym(  11) / 12/, ysym(  11) /  1/, psym(  11) /2/
       data xsym(  12) / 11/, ysym(  12) /  2/, psym(  12) /2/
C  34 """
       data lsym( 34,1) /  13/, lsym( 34,2) / 8/
       data xsym(  13) /  5/, ysym(  13) / 21/, psym(  13) /3/
       data xsym(  14) /  4/, ysym(  14) / 14/, psym(  14) /2/
       data xsym(  15) /  6/, ysym(  15) / 21/, psym(  15) /3/
       data xsym(  16) /  4/, ysym(  16) / 14/, psym(  16) /2/
       data xsym(  17) / 13/, ysym(  17) / 21/, psym(  17) /3/
       data xsym(  18) / 12/, ysym(  18) / 14/, psym(  18) /2/
       data xsym(  19) / 14/, ysym(  19) / 21/, psym(  19) /3/
       data xsym(  20) / 12/, ysym(  20) / 14/, psym(  20) /2/
C  35 "#"
       data lsym( 35,1) /  21/, lsym( 35,2) / 8/
       data xsym(  21) /  7/, ysym(  21) / 22/, psym(  21) /3/
       data xsym(  22) /  7/, ysym(  22) /  0/, psym(  22) /2/
       data xsym(  23) / 15/, ysym(  23) /  0/, psym(  23) /3/
       data xsym(  24) / 15/, ysym(  24) / 22/, psym(  24) /2/
       data xsym(  25) / 22/, ysym(  25) / 15/, psym(  25) /3/
       data xsym(  26) /  0/, ysym(  26) / 15/, psym(  26) /2/
       data xsym(  27) /  0/, ysym(  27) /  7/, psym(  27) /3/
       data xsym(  28) / 22/, ysym(  28) /  7/, psym(  28) /2/
C  36 "$"
       data lsym( 36,1) /  29/, lsym( 36,2) /22/
       data xsym(  29) / 18/, ysym(  29) / 18/, psym(  29) /3/
       data xsym(  30) / 16/, ysym(  30) / 20/, psym(  30) /2/
       data xsym(  31) / 13/, ysym(  31) / 21/, psym(  31) /2/
       data xsym(  32) /  9/, ysym(  32) / 21/, psym(  32) /2/
       data xsym(  33) /  6/, ysym(  33) / 20/, psym(  33) /2/
       data xsym(  34) /  4/, ysym(  34) / 18/, psym(  34) /2/
       data xsym(  35) /  4/, ysym(  35) / 16/, psym(  35) /2/
       data xsym(  36) /  5/, ysym(  36) / 14/, psym(  36) /2/
       data xsym(  37) /  6/, ysym(  37) / 13/, psym(  37) /2/
       data xsym(  38) /  8/, ysym(  38) / 12/, psym(  38) /2/
       data xsym(  39) / 14/, ysym(  39) / 10/, psym(  39) /2/
       data xsym(  40) / 16/, ysym(  40) /  9/, psym(  40) /2/
       data xsym(  41) / 17/, ysym(  41) /  8/, psym(  41) /2/
       data xsym(  42) / 18/, ysym(  42) /  6/, psym(  42) /2/
       data xsym(  43) / 18/, ysym(  43) /  3/, psym(  43) /2/
       data xsym(  44) / 16/, ysym(  44) /  1/, psym(  44) /2/
       data xsym(  45) / 13/, ysym(  45) /  0/, psym(  45) /2/
       data xsym(  46) /  9/, ysym(  46) /  0/, psym(  46) /2/
       data xsym(  47) /  6/, ysym(  47) /  1/, psym(  47) /2/
       data xsym(  48) /  4/, ysym(  48) /  3/, psym(  48) /2/
       data xsym(  49) / 11/, ysym(  49) / 25/, psym(  49) /3/
       data xsym(  50) / 11/, ysym(  50) / -4/, psym(  50) /2/
C  37 "%"
       data lsym( 37,1) /  51/, lsym( 37,2) /29/
       data xsym(  51) / 21/, ysym(  51) / 21/, psym(  51) /3/
       data xsym(  52) /  3/, ysym(  52) /  0/, psym(  52) /2/
       data xsym(  53) /  8/, ysym(  53) / 21/, psym(  53) /3/
       data xsym(  54) / 10/, ysym(  54) / 19/, psym(  54) /2/
       data xsym(  55) / 10/, ysym(  55) / 17/, psym(  55) /2/
       data xsym(  56) /  9/, ysym(  56) / 15/, psym(  56) /2/
       data xsym(  57) /  7/, ysym(  57) / 14/, psym(  57) /2/
       data xsym(  58) /  5/, ysym(  58) / 14/, psym(  58) /2/
       data xsym(  59) /  3/, ysym(  59) / 16/, psym(  59) /2/
       data xsym(  60) /  3/, ysym(  60) / 18/, psym(  60) /2/
       data xsym(  61) /  4/, ysym(  61) / 20/, psym(  61) /2/
       data xsym(  62) /  6/, ysym(  62) / 21/, psym(  62) /2/
       data xsym(  63) /  8/, ysym(  63) / 21/, psym(  63) /2/
       data xsym(  64) / 10/, ysym(  64) / 20/, psym(  64) /2/
       data xsym(  65) / 13/, ysym(  65) / 19/, psym(  65) /2/
       data xsym(  66) / 16/, ysym(  66) / 19/, psym(  66) /2/
       data xsym(  67) / 19/, ysym(  67) / 20/, psym(  67) /2/
       data xsym(  68) / 21/, ysym(  68) / 21/, psym(  68) /2/
       data xsym(  69) / 17/, ysym(  69) /  7/, psym(  69) /3/
       data xsym(  70) / 15/, ysym(  70) /  6/, psym(  70) /2/
       data xsym(  71) / 14/, ysym(  71) /  4/, psym(  71) /2/
       data xsym(  72) / 14/, ysym(  72) /  2/, psym(  72) /2/
       data xsym(  73) / 16/, ysym(  73) /  0/, psym(  73) /2/
       data xsym(  74) / 18/, ysym(  74) /  0/, psym(  74) /2/
       data xsym(  75) / 20/, ysym(  75) /  1/, psym(  75) /2/
       data xsym(  76) / 21/, ysym(  76) /  3/, psym(  76) /2/
       data xsym(  77) / 21/, ysym(  77) /  5/, psym(  77) /2/
       data xsym(  78) / 19/, ysym(  78) /  7/, psym(  78) /2/
       data xsym(  79) / 17/, ysym(  79) /  7/, psym(  79) /2/
C  38 "&"
       data lsym( 38,1) /  80/, lsym( 38,2) /13/
       data xsym(  80) / 14/, ysym(  80) / 18/, psym(  80) /3/
       data xsym(  81) / 11/, ysym(  81) / 21/, psym(  81) /2/
       data xsym(  82) /  8/, ysym(  82) / 21/, psym(  82) /2/
       data xsym(  83) /  5/, ysym(  83) / 18/, psym(  83) /2/
       data xsym(  84) /  5/, ysym(  84) / 14/, psym(  84) /2/
       data xsym(  85) /  8/, ysym(  85) / 11/, psym(  85) /2/
       data xsym(  86) /  5/, ysym(  86) /  7/, psym(  86) /2/
       data xsym(  87) /  5/, ysym(  87) /  3/, psym(  87) /2/
       data xsym(  88) /  8/, ysym(  88) /  0/, psym(  88) /2/
       data xsym(  89) / 11/, ysym(  89) /  0/, psym(  89) /2/
       data xsym(  90) / 14/, ysym(  90) /  3/, psym(  90) /2/
       data xsym(  91) / 11/, ysym(  91) /  6/, psym(  91) /2/
       data xsym(  92) / 17/, ysym(  92) /  0/, psym(  92) /2/
C  39 "'"
       data lsym( 39,1) /  93/, lsym( 39,2) / 4/
       data xsym(  93) /  9/, ysym(  93) / 21/, psym(  93) /3/
       data xsym(  94) /  8/, ysym(  94) / 14/, psym(  94) /2/
       data xsym(  95) / 10/, ysym(  95) / 21/, psym(  95) /3/
       data xsym(  96) /  8/, ysym(  96) / 14/, psym(  96) /2/
C  40 "("
       data lsym( 40,1) /  97/, lsym( 40,2) /10/
       data xsym(  97) / 13/, ysym(  97) / 25/, psym(  97) /3/
       data xsym(  98) / 11/, ysym(  98) / 23/, psym(  98) /2/
       data xsym(  99) /  9/, ysym(  99) / 20/, psym(  99) /2/
       data xsym( 100) /  7/, ysym( 100) / 16/, psym( 100) /2/
       data xsym( 101) /  6/, ysym( 101) / 11/, psym( 101) /2/
       data xsym( 102) /  6/, ysym( 102) /  7/, psym( 102) /2/
       data xsym( 103) /  7/, ysym( 103) /  2/, psym( 103) /2/
       data xsym( 104) /  9/, ysym( 104) / -2/, psym( 104) /2/
       data xsym( 105) / 11/, ysym( 105) / -5/, psym( 105) /2/
       data xsym( 106) / 13/, ysym( 106) / -7/, psym( 106) /2/
C  41 ")"
       data lsym( 41,1) / 107/, lsym( 41,2) /10/
       data xsym( 107) /  6/, ysym( 107) / 25/, psym( 107) /3/
       data xsym( 108) /  8/, ysym( 108) / 23/, psym( 108) /2/
       data xsym( 109) / 10/, ysym( 109) / 20/, psym( 109) /2/
       data xsym( 110) / 12/, ysym( 110) / 16/, psym( 110) /2/
       data xsym( 111) / 13/, ysym( 111) / 11/, psym( 111) /2/
       data xsym( 112) / 13/, ysym( 112) /  7/, psym( 112) /2/
       data xsym( 113) / 12/, ysym( 113) /  2/, psym( 113) /2/
       data xsym( 114) / 10/, ysym( 114) / -2/, psym( 114) /2/
       data xsym( 115) /  8/, ysym( 115) / -5/, psym( 115) /2/
       data xsym( 116) /  6/, ysym( 116) / -7/, psym( 116) /2/
C  42 "*"
       data lsym( 42,1) / 117/, lsym( 42,2) / 6/
       data xsym( 117) / 11/, ysym( 117) / 17/, psym( 117) /3/
       data xsym( 118) / 11/, ysym( 118) /  5/, psym( 118) /2/
       data xsym( 119) /  6/, ysym( 119) / 14/, psym( 119) /3/
       data xsym( 120) / 16/, ysym( 120) /  8/, psym( 120) /2/
       data xsym( 121) / 16/, ysym( 121) / 14/, psym( 121) /3/
       data xsym( 122) /  6/, ysym( 122) /  8/, psym( 122) /2/
C  43 "+"
       data lsym( 43,1) / 123/, lsym( 43,2) / 4/
       data xsym( 123) / 11/, ysym( 123) / 20/, psym( 123) /3/
       data xsym( 124) / 11/, ysym( 124) /  2/, psym( 124) /2/
       data xsym( 125) /  2/, ysym( 125) / 11/, psym( 125) /3/
       data xsym( 126) / 20/, ysym( 126) / 11/, psym( 126) /2/
C  44 ","
       data lsym( 44,1) / 127/, lsym( 44,2) / 8/
       data xsym( 127) / 12/, ysym( 127) /  1/, psym( 127) /3/
       data xsym( 128) / 11/, ysym( 128) /  0/, psym( 128) /2/
       data xsym( 129) / 10/, ysym( 129) /  1/, psym( 129) /2/
       data xsym( 130) / 11/, ysym( 130) /  2/, psym( 130) /2/
       data xsym( 131) / 12/, ysym( 131) /  1/, psym( 131) /2/
       data xsym( 132) / 12/, ysym( 132) / -1/, psym( 132) /2/
       data xsym( 133) / 11/, ysym( 133) / -3/, psym( 133) /2/
       data xsym( 134) / 10/, ysym( 134) / -4/, psym( 134) /2/
C  45 "-"
       data lsym( 45,1) / 135/, lsym( 45,2) / 2/
       data xsym( 135) /  2/, ysym( 135) / 11/, psym( 135) /3/
       data xsym( 136) / 20/, ysym( 136) / 11/, psym( 136) /2/
C  46 "."
       data lsym( 46,1) / 137/, lsym( 46,2) / 5/
       data xsym( 137) / 11/, ysym( 137) /  2/, psym( 137) /3/
       data xsym( 138) / 10/, ysym( 138) /  1/, psym( 138) /2/
       data xsym( 139) / 11/, ysym( 139) /  0/, psym( 139) /2/
       data xsym( 140) / 12/, ysym( 140) /  1/, psym( 140) /2/
       data xsym( 141) / 11/, ysym( 141) /  2/, psym( 141) /2/
C  47 "/"
       data lsym( 47,1) / 142/, lsym( 47,2) / 2/
       data xsym( 142) / 20/, ysym( 142) / 20/, psym( 142) /3/
       data xsym( 143) /  2/, ysym( 143) /  2/, psym( 143) /2/
C  48 "0"
       data lsym( 48,1) / 144/, lsym( 48,2) /17/
       data xsym( 144) / 10/, ysym( 144) / 21/, psym( 144) /3/
       data xsym( 145) /  7/, ysym( 145) / 20/, psym( 145) /2/
       data xsym( 146) /  5/, ysym( 146) / 17/, psym( 146) /2/
       data xsym( 147) /  4/, ysym( 147) / 12/, psym( 147) /2/
       data xsym( 148) /  4/, ysym( 148) /  9/, psym( 148) /2/
       data xsym( 149) /  5/, ysym( 149) /  4/, psym( 149) /2/
       data xsym( 150) /  7/, ysym( 150) /  1/, psym( 150) /2/
       data xsym( 151) / 10/, ysym( 151) /  0/, psym( 151) /2/
       data xsym( 152) / 12/, ysym( 152) /  0/, psym( 152) /2/
       data xsym( 153) / 15/, ysym( 153) /  1/, psym( 153) /2/
       data xsym( 154) / 17/, ysym( 154) /  4/, psym( 154) /2/
       data xsym( 155) / 18/, ysym( 155) /  9/, psym( 155) /2/
       data xsym( 156) / 18/, ysym( 156) / 12/, psym( 156) /2/
       data xsym( 157) / 17/, ysym( 157) / 17/, psym( 157) /2/
       data xsym( 158) / 15/, ysym( 158) / 20/, psym( 158) /2/
       data xsym( 159) / 12/, ysym( 159) / 21/, psym( 159) /2/
       data xsym( 160) / 10/, ysym( 160) / 21/, psym( 160) /2/
C  49 "1"
       data lsym( 49,1) / 161/, lsym( 49,2) / 4/
       data xsym( 161) /  6/, ysym( 161) / 17/, psym( 161) /3/
       data xsym( 162) /  8/, ysym( 162) / 18/, psym( 162) /2/
       data xsym( 163) / 11/, ysym( 163) / 21/, psym( 163) /2/
       data xsym( 164) / 11/, ysym( 164) /  0/, psym( 164) /2/
C  50 "2"
       data lsym( 50,1) / 165/, lsym( 50,2) /14/
       data xsym( 165) /  4/, ysym( 165) / 16/, psym( 165) /3/
       data xsym( 166) /  4/, ysym( 166) / 17/, psym( 166) /2/
       data xsym( 167) /  5/, ysym( 167) / 19/, psym( 167) /2/
       data xsym( 168) /  6/, ysym( 168) / 20/, psym( 168) /2/
       data xsym( 169) /  8/, ysym( 169) / 21/, psym( 169) /2/
       data xsym( 170) / 12/, ysym( 170) / 21/, psym( 170) /2/
       data xsym( 171) / 14/, ysym( 171) / 20/, psym( 171) /2/
       data xsym( 172) / 15/, ysym( 172) / 19/, psym( 172) /2/
       data xsym( 173) / 16/, ysym( 173) / 17/, psym( 173) /2/
       data xsym( 174) / 16/, ysym( 174) / 15/, psym( 174) /2/
       data xsym( 175) / 15/, ysym( 175) / 13/, psym( 175) /2/
       data xsym( 176) / 13/, ysym( 176) / 10/, psym( 176) /2/
       data xsym( 177) /  3/, ysym( 177) /  0/, psym( 177) /2/
       data xsym( 178) / 17/, ysym( 178) /  0/, psym( 178) /2/
C  51 "3"
       data lsym( 51,1) / 179/, lsym( 51,2) /15/
       data xsym( 179) /  5/, ysym( 179) / 21/, psym( 179) /3/
       data xsym( 180) / 16/, ysym( 180) / 21/, psym( 180) /2/
       data xsym( 181) / 10/, ysym( 181) / 13/, psym( 181) /2/
       data xsym( 182) / 13/, ysym( 182) / 13/, psym( 182) /2/
       data xsym( 183) / 15/, ysym( 183) / 12/, psym( 183) /2/
       data xsym( 184) / 16/, ysym( 184) / 11/, psym( 184) /2/
       data xsym( 185) / 17/, ysym( 185) /  8/, psym( 185) /2/
       data xsym( 186) / 17/, ysym( 186) /  6/, psym( 186) /2/
       data xsym( 187) / 16/, ysym( 187) /  3/, psym( 187) /2/
       data xsym( 188) / 14/, ysym( 188) /  1/, psym( 188) /2/
       data xsym( 189) / 11/, ysym( 189) /  0/, psym( 189) /2/
       data xsym( 190) /  8/, ysym( 190) /  0/, psym( 190) /2/
       data xsym( 191) /  5/, ysym( 191) /  1/, psym( 191) /2/
       data xsym( 192) /  4/, ysym( 192) /  2/, psym( 192) /2/
       data xsym( 193) /  3/, ysym( 193) /  4/, psym( 193) /2/
C  52 "4"
       data lsym( 52,1) / 194/, lsym( 52,2) / 5/
       data xsym( 194) / 13/, ysym( 194) / 21/, psym( 194) /3/
       data xsym( 195) /  3/, ysym( 195) /  7/, psym( 195) /2/
       data xsym( 196) / 18/, ysym( 196) /  7/, psym( 196) /2/
       data xsym( 197) / 13/, ysym( 197) / 21/, psym( 197) /3/
       data xsym( 198) / 13/, ysym( 198) /  0/, psym( 198) /2/
C  53 "5"
       data lsym( 53,1) / 199/, lsym( 53,2) /17/
       data xsym( 199) / 15/, ysym( 199) / 21/, psym( 199) /3/
       data xsym( 200) /  5/, ysym( 200) / 21/, psym( 200) /2/
       data xsym( 201) /  4/, ysym( 201) / 12/, psym( 201) /2/
       data xsym( 202) /  5/, ysym( 202) / 13/, psym( 202) /2/
       data xsym( 203) /  8/, ysym( 203) / 14/, psym( 203) /2/
       data xsym( 204) / 11/, ysym( 204) / 14/, psym( 204) /2/
       data xsym( 205) / 14/, ysym( 205) / 13/, psym( 205) /2/
       data xsym( 206) / 16/, ysym( 206) / 11/, psym( 206) /2/
       data xsym( 207) / 17/, ysym( 207) /  8/, psym( 207) /2/
       data xsym( 208) / 17/, ysym( 208) /  6/, psym( 208) /2/
       data xsym( 209) / 16/, ysym( 209) /  3/, psym( 209) /2/
       data xsym( 210) / 14/, ysym( 210) /  1/, psym( 210) /2/
       data xsym( 211) / 11/, ysym( 211) /  0/, psym( 211) /2/
       data xsym( 212) /  8/, ysym( 212) /  0/, psym( 212) /2/
       data xsym( 213) /  5/, ysym( 213) /  1/, psym( 213) /2/
       data xsym( 214) /  4/, ysym( 214) /  2/, psym( 214) /2/
       data xsym( 215) /  3/, ysym( 215) /  4/, psym( 215) /2/
C  54 "6"
       data lsym( 54,1) / 216/, lsym( 54,2) /23/
       data xsym( 216) / 16/, ysym( 216) / 18/, psym( 216) /3/
       data xsym( 217) / 15/, ysym( 217) / 20/, psym( 217) /2/
       data xsym( 218) / 12/, ysym( 218) / 21/, psym( 218) /2/
       data xsym( 219) / 10/, ysym( 219) / 21/, psym( 219) /2/
       data xsym( 220) /  7/, ysym( 220) / 20/, psym( 220) /2/
       data xsym( 221) /  5/, ysym( 221) / 17/, psym( 221) /2/
       data xsym( 222) /  4/, ysym( 222) / 12/, psym( 222) /2/
       data xsym( 223) /  4/, ysym( 223) /  7/, psym( 223) /2/
       data xsym( 224) /  5/, ysym( 224) /  3/, psym( 224) /2/
       data xsym( 225) /  7/, ysym( 225) /  1/, psym( 225) /2/
       data xsym( 226) / 10/, ysym( 226) /  0/, psym( 226) /2/
       data xsym( 227) / 11/, ysym( 227) /  0/, psym( 227) /2/
       data xsym( 228) / 14/, ysym( 228) /  1/, psym( 228) /2/
       data xsym( 229) / 16/, ysym( 229) /  3/, psym( 229) /2/
       data xsym( 230) / 17/, ysym( 230) /  6/, psym( 230) /2/
       data xsym( 231) / 17/, ysym( 231) /  7/, psym( 231) /2/
       data xsym( 232) / 16/, ysym( 232) / 10/, psym( 232) /2/
       data xsym( 233) / 14/, ysym( 233) / 12/, psym( 233) /2/
       data xsym( 234) / 11/, ysym( 234) / 13/, psym( 234) /2/
       data xsym( 235) / 10/, ysym( 235) / 13/, psym( 235) /2/
       data xsym( 236) /  7/, ysym( 236) / 12/, psym( 236) /2/
       data xsym( 237) /  5/, ysym( 237) / 10/, psym( 237) /2/
       data xsym( 238) /  4/, ysym( 238) /  7/, psym( 238) /2/
C  55 "7"
       data lsym( 55,1) / 239/, lsym( 55,2) / 4/
       data xsym( 239) / 17/, ysym( 239) / 21/, psym( 239) /3/
       data xsym( 240) /  7/, ysym( 240) /  0/, psym( 240) /2/
       data xsym( 241) /  3/, ysym( 241) / 21/, psym( 241) /3/
       data xsym( 242) / 17/, ysym( 242) / 21/, psym( 242) /2/
C  56 "8"
       data lsym( 56,1) / 243/, lsym( 56,2) /29/
       data xsym( 243) /  9/, ysym( 243) / 21/, psym( 243) /3/
       data xsym( 244) /  6/, ysym( 244) / 20/, psym( 244) /2/
       data xsym( 245) /  5/, ysym( 245) / 18/, psym( 245) /2/
       data xsym( 246) /  5/, ysym( 246) / 16/, psym( 246) /2/
       data xsym( 247) /  6/, ysym( 247) / 14/, psym( 247) /2/
       data xsym( 248) /  8/, ysym( 248) / 13/, psym( 248) /2/
       data xsym( 249) / 12/, ysym( 249) / 12/, psym( 249) /2/
       data xsym( 250) / 15/, ysym( 250) / 11/, psym( 250) /2/
       data xsym( 251) / 17/, ysym( 251) /  9/, psym( 251) /2/
       data xsym( 252) / 18/, ysym( 252) /  7/, psym( 252) /2/
       data xsym( 253) / 18/, ysym( 253) /  4/, psym( 253) /2/
       data xsym( 254) / 17/, ysym( 254) /  2/, psym( 254) /2/
       data xsym( 255) / 16/, ysym( 255) /  1/, psym( 255) /2/
       data xsym( 256) / 13/, ysym( 256) /  0/, psym( 256) /2/
       data xsym( 257) /  9/, ysym( 257) /  0/, psym( 257) /2/
       data xsym( 258) /  6/, ysym( 258) /  1/, psym( 258) /2/
       data xsym( 259) /  5/, ysym( 259) /  2/, psym( 259) /2/
       data xsym( 260) /  4/, ysym( 260) /  4/, psym( 260) /2/
       data xsym( 261) /  4/, ysym( 261) /  7/, psym( 261) /2/
       data xsym( 262) /  5/, ysym( 262) /  9/, psym( 262) /2/
       data xsym( 263) /  7/, ysym( 263) / 11/, psym( 263) /2/
       data xsym( 264) / 10/, ysym( 264) / 12/, psym( 264) /2/
       data xsym( 265) / 14/, ysym( 265) / 13/, psym( 265) /2/
       data xsym( 266) / 16/, ysym( 266) / 14/, psym( 266) /2/
       data xsym( 267) / 17/, ysym( 267) / 16/, psym( 267) /2/
       data xsym( 268) / 17/, ysym( 268) / 18/, psym( 268) /2/
       data xsym( 269) / 16/, ysym( 269) / 20/, psym( 269) /2/
       data xsym( 270) / 13/, ysym( 270) / 21/, psym( 270) /2/
       data xsym( 271) /  9/, ysym( 271) / 21/, psym( 271) /2/
C  57 "9"
       data lsym( 57,1) / 272/, lsym( 57,2) /23/
       data xsym( 272) / 16/, ysym( 272) / 14/, psym( 272) /3/
       data xsym( 273) / 15/, ysym( 273) / 11/, psym( 273) /2/
       data xsym( 274) / 13/, ysym( 274) /  9/, psym( 274) /2/
       data xsym( 275) / 10/, ysym( 275) /  8/, psym( 275) /2/
       data xsym( 276) /  9/, ysym( 276) /  8/, psym( 276) /2/
       data xsym( 277) /  6/, ysym( 277) /  9/, psym( 277) /2/
       data xsym( 278) /  4/, ysym( 278) / 11/, psym( 278) /2/
       data xsym( 279) /  3/, ysym( 279) / 14/, psym( 279) /2/
       data xsym( 280) /  3/, ysym( 280) / 15/, psym( 280) /2/
       data xsym( 281) /  4/, ysym( 281) / 18/, psym( 281) /2/
       data xsym( 282) /  6/, ysym( 282) / 20/, psym( 282) /2/
       data xsym( 283) /  9/, ysym( 283) / 21/, psym( 283) /2/
       data xsym( 284) / 10/, ysym( 284) / 21/, psym( 284) /2/
       data xsym( 285) / 13/, ysym( 285) / 20/, psym( 285) /2/
       data xsym( 286) / 15/, ysym( 286) / 18/, psym( 286) /2/
       data xsym( 287) / 16/, ysym( 287) / 14/, psym( 287) /2/
       data xsym( 288) / 16/, ysym( 288) /  9/, psym( 288) /2/
       data xsym( 289) / 15/, ysym( 289) /  4/, psym( 289) /2/
       data xsym( 290) / 13/, ysym( 290) /  1/, psym( 290) /2/
       data xsym( 291) / 10/, ysym( 291) /  0/, psym( 291) /2/
       data xsym( 292) /  8/, ysym( 292) /  0/, psym( 292) /2/
       data xsym( 293) /  5/, ysym( 293) /  1/, psym( 293) /2/
       data xsym( 294) /  4/, ysym( 294) /  3/, psym( 294) /2/
C  58 ":"
       data lsym( 58,1) / 295/, lsym( 58,2) /10/
       data xsym( 295) / 11/, ysym( 295) / 14/, psym( 295) /3/
       data xsym( 296) / 10/, ysym( 296) / 13/, psym( 296) /2/
       data xsym( 297) / 12/, ysym( 297) / 12/, psym( 297) /2/
       data xsym( 298) / 12/, ysym( 298) / 13/, psym( 298) /2/
       data xsym( 299) / 11/, ysym( 299) / 14/, psym( 299) /2/
       data xsym( 300) / 11/, ysym( 300) /  2/, psym( 300) /3/
       data xsym( 301) / 10/, ysym( 301) /  1/, psym( 301) /2/
       data xsym( 302) / 11/, ysym( 302) /  0/, psym( 302) /2/
       data xsym( 303) / 12/, ysym( 303) /  1/, psym( 303) /2/
       data xsym( 304) / 11/, ysym( 304) /  2/, psym( 304) /2/
C  59 ";"
       data lsym( 59,1) / 305/, lsym( 59,2) /12/
       data xsym( 305) / 11/, ysym( 305) / 14/, psym( 305) /3/
       data xsym( 306) / 10/, ysym( 306) / 13/, psym( 306) /2/
       data xsym( 307) / 11/, ysym( 307) / 12/, psym( 307) /2/
       data xsym( 308) / 12/, ysym( 308) / 13/, psym( 308) /2/
       data xsym( 309) / 11/, ysym( 309) / 14/, psym( 309) /2/
       data xsym( 310) / 11/, ysym( 310) /  0/, psym( 310) /3/
       data xsym( 311) / 10/, ysym( 311) /  1/, psym( 311) /2/
       data xsym( 312) / 11/, ysym( 312) /  2/, psym( 312) /2/
       data xsym( 313) / 12/, ysym( 313) /  1/, psym( 313) /2/
       data xsym( 314) / 12/, ysym( 314) / -1/, psym( 314) /2/
       data xsym( 315) / 11/, ysym( 315) / -3/, psym( 315) /2/
       data xsym( 316) / 10/, ysym( 316) / -4/, psym( 316) /2/
C  60 "<"
       data lsym( 60,1) / 317/, lsym( 60,2) / 3/
       data xsym( 317) / 20/, ysym( 317) / 18/, psym( 317) /3/
       data xsym( 318) /  4/, ysym( 318) /  9/, psym( 318) /2/
       data xsym( 319) / 20/, ysym( 319) /  0/, psym( 319) /2/
C  61 "="
       data lsym( 61,1) / 320/, lsym( 61,2) / 4/
       data xsym( 320) /  2/, ysym( 320) / 14/, psym( 320) /3/
       data xsym( 321) / 20/, ysym( 321) / 14/, psym( 321) /2/
       data xsym( 322) /  2/, ysym( 322) /  8/, psym( 322) /3/
       data xsym( 323) / 20/, ysym( 323) /  8/, psym( 323) /2/
C  62 ">"
       data lsym( 62,1) / 324/, lsym( 62,2) / 3/
       data xsym( 324) /  4/, ysym( 324) / 18/, psym( 324) /3/
       data xsym( 325) / 20/, ysym( 325) /  9/, psym( 325) /2/
       data xsym( 326) /  4/, ysym( 326) /  0/, psym( 326) /2/
C  63 "?"
       data lsym( 63,1) / 327/, lsym( 63,2) /22/
       data xsym( 327) /  6/, ysym( 327) / 17/, psym( 327) /3/
       data xsym( 328) /  7/, ysym( 328) / 16/, psym( 328) /2/
       data xsym( 329) /  6/, ysym( 329) / 15/, psym( 329) /2/
       data xsym( 330) /  5/, ysym( 330) / 16/, psym( 330) /2/
       data xsym( 331) /  5/, ysym( 331) / 17/, psym( 331) /2/
       data xsym( 332) /  6/, ysym( 332) / 19/, psym( 332) /2/
       data xsym( 333) /  7/, ysym( 333) / 20/, psym( 333) /2/
       data xsym( 334) /  9/, ysym( 334) / 21/, psym( 334) /2/
       data xsym( 335) / 12/, ysym( 335) / 21/, psym( 335) /2/
       data xsym( 336) / 15/, ysym( 336) / 20/, psym( 336) /2/
       data xsym( 337) / 16/, ysym( 337) / 19/, psym( 337) /2/
       data xsym( 338) / 17/, ysym( 338) / 17/, psym( 338) /2/
       data xsym( 339) / 17/, ysym( 339) / 15/, psym( 339) /2/
       data xsym( 340) / 16/, ysym( 340) / 13/, psym( 340) /2/
       data xsym( 341) / 15/, ysym( 341) / 12/, psym( 341) /2/
       data xsym( 342) / 11/, ysym( 342) / 10/, psym( 342) /2/
       data xsym( 343) / 11/, ysym( 343) /  7/, psym( 343) /2/
       data xsym( 344) / 11/, ysym( 344) /  2/, psym( 344) /3/
       data xsym( 345) / 10/, ysym( 345) /  1/, psym( 345) /2/
       data xsym( 346) / 11/, ysym( 346) /  0/, psym( 346) /2/
       data xsym( 347) / 12/, ysym( 347) /  1/, psym( 347) /2/
       data xsym( 348) / 11/, ysym( 348) /  2/, psym( 348) /2/
C  64 "@"
       data lsym( 64,1) / 349/, lsym( 64,2) /42/
       data xsym( 349) / 16/, ysym( 349) / 13/, psym( 349) /3/
       data xsym( 350) / 15/, ysym( 350) / 15/, psym( 350) /2/
       data xsym( 351) / 13/, ysym( 351) / 16/, psym( 351) /2/
       data xsym( 352) / 10/, ysym( 352) / 16/, psym( 352) /2/
       data xsym( 353) /  8/, ysym( 353) / 15/, psym( 353) /2/
       data xsym( 354) /  7/, ysym( 354) / 14/, psym( 354) /2/
       data xsym( 355) /  6/, ysym( 355) / 11/, psym( 355) /2/
       data xsym( 356) /  6/, ysym( 356) /  8/, psym( 356) /2/
       data xsym( 357) /  7/, ysym( 357) /  6/, psym( 357) /2/
       data xsym( 358) /  9/, ysym( 358) /  5/, psym( 358) /2/
       data xsym( 359) / 12/, ysym( 359) /  5/, psym( 359) /2/
       data xsym( 360) / 14/, ysym( 360) /  6/, psym( 360) /2/
       data xsym( 361) / 15/, ysym( 361) /  8/, psym( 361) /2/
       data xsym( 362) / 16/, ysym( 362) / 16/, psym( 362) /3/
       data xsym( 363) / 15/, ysym( 363) /  8/, psym( 363) /2/
       data xsym( 364) / 15/, ysym( 364) /  6/, psym( 364) /2/
       data xsym( 365) / 17/, ysym( 365) /  5/, psym( 365) /2/
       data xsym( 366) / 19/, ysym( 366) /  5/, psym( 366) /2/
       data xsym( 367) / 21/, ysym( 367) /  7/, psym( 367) /2/
       data xsym( 368) / 22/, ysym( 368) / 10/, psym( 368) /2/
       data xsym( 369) / 22/, ysym( 369) / 12/, psym( 369) /2/
       data xsym( 370) / 21/, ysym( 370) / 15/, psym( 370) /2/
       data xsym( 371) / 20/, ysym( 371) / 17/, psym( 371) /2/
       data xsym( 372) / 18/, ysym( 372) / 19/, psym( 372) /2/
       data xsym( 373) / 16/, ysym( 373) / 20/, psym( 373) /2/
       data xsym( 374) / 13/, ysym( 374) / 21/, psym( 374) /2/
       data xsym( 375) / 10/, ysym( 375) / 21/, psym( 375) /2/
       data xsym( 376) /  7/, ysym( 376) / 20/, psym( 376) /2/
       data xsym( 377) /  5/, ysym( 377) / 19/, psym( 377) /2/
       data xsym( 378) /  3/, ysym( 378) / 17/, psym( 378) /2/
       data xsym( 379) /  2/, ysym( 379) / 15/, psym( 379) /2/
       data xsym( 380) /  1/, ysym( 380) / 12/, psym( 380) /2/
       data xsym( 381) /  1/, ysym( 381) /  9/, psym( 381) /2/
       data xsym( 382) /  2/, ysym( 382) /  6/, psym( 382) /2/
       data xsym( 383) /  3/, ysym( 383) /  4/, psym( 383) /2/
       data xsym( 384) /  5/, ysym( 384) /  2/, psym( 384) /2/
       data xsym( 385) /  7/, ysym( 385) /  1/, psym( 385) /2/
       data xsym( 386) / 10/, ysym( 386) /  0/, psym( 386) /2/
       data xsym( 387) / 13/, ysym( 387) /  0/, psym( 387) /2/
       data xsym( 388) / 16/, ysym( 388) /  1/, psym( 388) /2/
       data xsym( 389) / 18/, ysym( 389) /  2/, psym( 389) /2/
       data xsym( 390) / 19/, ysym( 390) /  3/, psym( 390) /2/
C  65 "A"
       data lsym( 65,1) / 391/, lsym( 65,2) / 6/
       data xsym( 391) / 11/, ysym( 391) / 21/, psym( 391) /3/
       data xsym( 392) /  3/, ysym( 392) /  0/, psym( 392) /2/
       data xsym( 393) / 11/, ysym( 393) / 21/, psym( 393) /3/
       data xsym( 394) / 19/, ysym( 394) /  0/, psym( 394) /2/
       data xsym( 395) /  6/, ysym( 395) /  7/, psym( 395) /3/
       data xsym( 396) / 16/, ysym( 396) /  7/, psym( 396) /2/
C  66 "B"
       data lsym( 66,1) / 397/, lsym( 66,2) /21/
       data xsym( 397) /  4/, ysym( 397) / 21/, psym( 397) /3/
       data xsym( 398) /  4/, ysym( 398) /  0/, psym( 398) /2/
       data xsym( 399) /  4/, ysym( 399) / 21/, psym( 399) /3/
       data xsym( 400) / 13/, ysym( 400) / 21/, psym( 400) /2/
       data xsym( 401) / 16/, ysym( 401) / 20/, psym( 401) /2/
       data xsym( 402) / 17/, ysym( 402) / 19/, psym( 402) /2/
       data xsym( 403) / 18/, ysym( 403) / 17/, psym( 403) /2/
       data xsym( 404) / 18/, ysym( 404) / 15/, psym( 404) /2/
       data xsym( 405) / 17/, ysym( 405) / 13/, psym( 405) /2/
       data xsym( 406) / 16/, ysym( 406) / 12/, psym( 406) /2/
       data xsym( 407) / 13/, ysym( 407) / 11/, psym( 407) /2/
       data xsym( 408) /  4/, ysym( 408) / 11/, psym( 408) /3/
       data xsym( 409) / 13/, ysym( 409) / 11/, psym( 409) /2/
       data xsym( 410) / 16/, ysym( 410) / 10/, psym( 410) /2/
       data xsym( 411) / 17/, ysym( 411) /  9/, psym( 411) /2/
       data xsym( 412) / 18/, ysym( 412) /  7/, psym( 412) /2/
       data xsym( 413) / 18/, ysym( 413) /  4/, psym( 413) /2/
       data xsym( 414) / 17/, ysym( 414) /  2/, psym( 414) /2/
       data xsym( 415) / 16/, ysym( 415) /  1/, psym( 415) /2/
       data xsym( 416) / 13/, ysym( 416) /  0/, psym( 416) /2/
       data xsym( 417) /  4/, ysym( 417) /  0/, psym( 417) /2/
C  67 "C"
       data lsym( 67,1) / 418/, lsym( 67,2) /18/
       data xsym( 418) / 18/, ysym( 418) / 16/, psym( 418) /3/
       data xsym( 419) / 17/, ysym( 419) / 18/, psym( 419) /2/
       data xsym( 420) / 15/, ysym( 420) / 20/, psym( 420) /2/
       data xsym( 421) / 13/, ysym( 421) / 21/, psym( 421) /2/
       data xsym( 422) /  9/, ysym( 422) / 21/, psym( 422) /2/
       data xsym( 423) /  7/, ysym( 423) / 20/, psym( 423) /2/
       data xsym( 424) /  5/, ysym( 424) / 18/, psym( 424) /2/
       data xsym( 425) /  4/, ysym( 425) / 16/, psym( 425) /2/
       data xsym( 426) /  3/, ysym( 426) / 13/, psym( 426) /2/
       data xsym( 427) /  3/, ysym( 427) /  8/, psym( 427) /2/
       data xsym( 428) /  4/, ysym( 428) /  5/, psym( 428) /2/
       data xsym( 429) /  5/, ysym( 429) /  3/, psym( 429) /2/
       data xsym( 430) /  7/, ysym( 430) /  1/, psym( 430) /2/
       data xsym( 431) /  9/, ysym( 431) /  0/, psym( 431) /2/
       data xsym( 432) / 13/, ysym( 432) /  0/, psym( 432) /2/
       data xsym( 433) / 15/, ysym( 433) /  1/, psym( 433) /2/
       data xsym( 434) / 17/, ysym( 434) /  3/, psym( 434) /2/
       data xsym( 435) / 18/, ysym( 435) /  5/, psym( 435) /2/
C  68 "D"
       data lsym( 68,1) / 436/, lsym( 68,2) /14/
       data xsym( 436) /  4/, ysym( 436) / 21/, psym( 436) /3/
       data xsym( 437) /  4/, ysym( 437) /  0/, psym( 437) /2/
       data xsym( 438) /  4/, ysym( 438) / 21/, psym( 438) /3/
       data xsym( 439) / 11/, ysym( 439) / 21/, psym( 439) /2/
       data xsym( 440) / 14/, ysym( 440) / 20/, psym( 440) /2/
       data xsym( 441) / 16/, ysym( 441) / 18/, psym( 441) /2/
       data xsym( 442) / 17/, ysym( 442) / 16/, psym( 442) /2/
       data xsym( 443) / 18/, ysym( 443) / 13/, psym( 443) /2/
       data xsym( 444) / 18/, ysym( 444) /  8/, psym( 444) /2/
       data xsym( 445) / 17/, ysym( 445) /  5/, psym( 445) /2/
       data xsym( 446) / 16/, ysym( 446) /  3/, psym( 446) /2/
       data xsym( 447) / 14/, ysym( 447) /  1/, psym( 447) /2/
       data xsym( 448) / 11/, ysym( 448) /  0/, psym( 448) /2/
       data xsym( 449) /  4/, ysym( 449) /  0/, psym( 449) /2/
C  69 "E"
       data lsym( 69,1) / 450/, lsym( 69,2) / 8/
       data xsym( 450) /  4/, ysym( 450) / 21/, psym( 450) /3/
       data xsym( 451) /  4/, ysym( 451) /  0/, psym( 451) /2/
       data xsym( 452) /  4/, ysym( 452) / 21/, psym( 452) /3/
       data xsym( 453) / 17/, ysym( 453) / 21/, psym( 453) /2/
       data xsym( 454) /  4/, ysym( 454) / 11/, psym( 454) /3/
       data xsym( 455) / 12/, ysym( 455) / 11/, psym( 455) /2/
       data xsym( 456) /  4/, ysym( 456) /  0/, psym( 456) /3/
       data xsym( 457) / 17/, ysym( 457) /  0/, psym( 457) /2/
C  70 "F"
       data lsym( 70,1) / 458/, lsym( 70,2) / 6/
       data xsym( 458) /  4/, ysym( 458) / 21/, psym( 458) /3/
       data xsym( 459) /  4/, ysym( 459) /  0/, psym( 459) /2/
       data xsym( 460) /  4/, ysym( 460) / 21/, psym( 460) /3/
       data xsym( 461) / 17/, ysym( 461) / 21/, psym( 461) /2/
       data xsym( 462) /  4/, ysym( 462) / 11/, psym( 462) /3/
       data xsym( 463) / 12/, ysym( 463) / 11/, psym( 463) /2/
C  71 "G"
       data lsym( 71,1) / 464/, lsym( 71,2) /21/
       data xsym( 464) / 18/, ysym( 464) / 16/, psym( 464) /3/
       data xsym( 465) / 17/, ysym( 465) / 18/, psym( 465) /2/
       data xsym( 466) / 15/, ysym( 466) / 20/, psym( 466) /2/
       data xsym( 467) / 13/, ysym( 467) / 21/, psym( 467) /2/
       data xsym( 468) /  9/, ysym( 468) / 21/, psym( 468) /2/
       data xsym( 469) /  7/, ysym( 469) / 20/, psym( 469) /2/
       data xsym( 470) /  5/, ysym( 470) / 18/, psym( 470) /2/
       data xsym( 471) /  4/, ysym( 471) / 16/, psym( 471) /2/
       data xsym( 472) /  3/, ysym( 472) / 13/, psym( 472) /2/
       data xsym( 473) /  3/, ysym( 473) /  8/, psym( 473) /2/
       data xsym( 474) /  4/, ysym( 474) /  5/, psym( 474) /2/
       data xsym( 475) /  5/, ysym( 475) /  3/, psym( 475) /2/
       data xsym( 476) /  7/, ysym( 476) /  1/, psym( 476) /2/
       data xsym( 477) /  9/, ysym( 477) /  0/, psym( 477) /2/
       data xsym( 478) / 13/, ysym( 478) /  0/, psym( 478) /2/
       data xsym( 479) / 15/, ysym( 479) /  1/, psym( 479) /2/
       data xsym( 480) / 17/, ysym( 480) /  3/, psym( 480) /2/
       data xsym( 481) / 18/, ysym( 481) /  5/, psym( 481) /2/
       data xsym( 482) / 18/, ysym( 482) /  8/, psym( 482) /2/
       data xsym( 483) / 13/, ysym( 483) /  8/, psym( 483) /3/
       data xsym( 484) / 18/, ysym( 484) /  8/, psym( 484) /2/
C  72 "H"
       data lsym( 72,1) / 485/, lsym( 72,2) / 6/
       data xsym( 485) /  4/, ysym( 485) / 21/, psym( 485) /3/
       data xsym( 486) /  4/, ysym( 486) /  0/, psym( 486) /2/
       data xsym( 487) / 18/, ysym( 487) / 21/, psym( 487) /3/
       data xsym( 488) / 18/, ysym( 488) /  0/, psym( 488) /2/
       data xsym( 489) /  4/, ysym( 489) / 11/, psym( 489) /3/
       data xsym( 490) / 18/, ysym( 490) / 11/, psym( 490) /2/
C  73 "I"
       data lsym( 73,1) / 491/, lsym( 73,2) / 6/
       data xsym( 491) / 11/, ysym( 491) / 21/, psym( 491) /3/
       data xsym( 492) / 11/, ysym( 492) /  0/, psym( 492) /2/
       data xsym( 493) /  7/, ysym( 493) /  0/, psym( 493) /3/
       data xsym( 494) / 15/, ysym( 494) /  0/, psym( 494) /2/
       data xsym( 495) /  7/, ysym( 495) / 21/, psym( 495) /3/
       data xsym( 496) / 15/, ysym( 496) / 21/, psym( 496) /2/
C  74 "J"
       data lsym( 74,1) / 497/, lsym( 74,2) /10/
       data xsym( 497) / 15/, ysym( 497) / 21/, psym( 497) /3/
       data xsym( 498) / 15/, ysym( 498) /  5/, psym( 498) /2/
       data xsym( 499) / 14/, ysym( 499) /  2/, psym( 499) /2/
       data xsym( 500) / 13/, ysym( 500) /  1/, psym( 500) /2/
       data xsym( 501) / 11/, ysym( 501) /  0/, psym( 501) /2/
       data xsym( 502) /  9/, ysym( 502) /  0/, psym( 502) /2/
       data xsym( 503) /  7/, ysym( 503) /  1/, psym( 503) /2/
       data xsym( 504) /  6/, ysym( 504) /  2/, psym( 504) /2/
       data xsym( 505) /  5/, ysym( 505) /  5/, psym( 505) /2/
       data xsym( 506) /  5/, ysym( 506) /  7/, psym( 506) /2/
C  75 "K"
       data lsym( 75,1) / 507/, lsym( 75,2) / 6/
       data xsym( 507) /  4/, ysym( 507) / 21/, psym( 507) /3/
       data xsym( 508) /  4/, ysym( 508) /  0/, psym( 508) /2/
       data xsym( 509) / 18/, ysym( 509) / 21/, psym( 509) /3/
       data xsym( 510) /  4/, ysym( 510) /  7/, psym( 510) /2/
       data xsym( 511) /  9/, ysym( 511) / 12/, psym( 511) /3/
       data xsym( 512) / 18/, ysym( 512) /  0/, psym( 512) /2/
C  76 "L"
       data lsym( 76,1) / 513/, lsym( 76,2) / 4/
       data xsym( 513) /  5/, ysym( 513) / 21/, psym( 513) /3/
       data xsym( 514) /  5/, ysym( 514) /  0/, psym( 514) /2/
       data xsym( 515) /  5/, ysym( 515) /  0/, psym( 515) /3/
       data xsym( 516) / 17/, ysym( 516) /  0/, psym( 516) /2/
C  77 "M"
       data lsym( 77,1) / 517/, lsym( 77,2) / 8/
       data xsym( 517) /  3/, ysym( 517) / 21/, psym( 517) /3/
       data xsym( 518) /  3/, ysym( 518) /  0/, psym( 518) /2/
       data xsym( 519) /  3/, ysym( 519) / 21/, psym( 519) /3/
       data xsym( 520) / 11/, ysym( 520) /  0/, psym( 520) /2/
       data xsym( 521) / 19/, ysym( 521) / 21/, psym( 521) /3/
       data xsym( 522) / 11/, ysym( 522) /  0/, psym( 522) /2/
       data xsym( 523) / 19/, ysym( 523) / 21/, psym( 523) /3/
       data xsym( 524) / 19/, ysym( 524) /  0/, psym( 524) /2/
C  78 "N"
       data lsym( 78,1) / 525/, lsym( 78,2) / 6/
       data xsym( 525) /  4/, ysym( 525) / 21/, psym( 525) /3/
       data xsym( 526) /  4/, ysym( 526) /  0/, psym( 526) /2/
       data xsym( 527) /  4/, ysym( 527) / 21/, psym( 527) /3/
       data xsym( 528) / 18/, ysym( 528) /  0/, psym( 528) /2/
       data xsym( 529) / 18/, ysym( 529) / 21/, psym( 529) /3/
       data xsym( 530) / 18/, ysym( 530) /  0/, psym( 530) /2/
C  79 "O"
       data lsym( 79,1) / 531/, lsym( 79,2) /21/
       data xsym( 531) /  9/, ysym( 531) / 21/, psym( 531) /3/
       data xsym( 532) /  7/, ysym( 532) / 20/, psym( 532) /2/
       data xsym( 533) /  5/, ysym( 533) / 18/, psym( 533) /2/
       data xsym( 534) /  4/, ysym( 534) / 16/, psym( 534) /2/
       data xsym( 535) /  3/, ysym( 535) / 13/, psym( 535) /2/
       data xsym( 536) /  3/, ysym( 536) /  8/, psym( 536) /2/
       data xsym( 537) /  4/, ysym( 537) /  5/, psym( 537) /2/
       data xsym( 538) /  5/, ysym( 538) /  3/, psym( 538) /2/
       data xsym( 539) /  7/, ysym( 539) /  1/, psym( 539) /2/
       data xsym( 540) /  9/, ysym( 540) /  0/, psym( 540) /2/
       data xsym( 541) / 13/, ysym( 541) /  0/, psym( 541) /2/
       data xsym( 542) / 15/, ysym( 542) /  1/, psym( 542) /2/
       data xsym( 543) / 17/, ysym( 543) /  3/, psym( 543) /2/
       data xsym( 544) / 18/, ysym( 544) /  5/, psym( 544) /2/
       data xsym( 545) / 19/, ysym( 545) /  8/, psym( 545) /2/
       data xsym( 546) / 19/, ysym( 546) / 13/, psym( 546) /2/
       data xsym( 547) / 18/, ysym( 547) / 16/, psym( 547) /2/
       data xsym( 548) / 17/, ysym( 548) / 18/, psym( 548) /2/
       data xsym( 549) / 15/, ysym( 549) / 20/, psym( 549) /2/
       data xsym( 550) / 13/, ysym( 550) / 21/, psym( 550) /2/
       data xsym( 551) /  9/, ysym( 551) / 21/, psym( 551) /2/
C  80 "P"
       data lsym( 80,1) / 552/, lsym( 80,2) /12/
       data xsym( 552) /  4/, ysym( 552) / 21/, psym( 552) /3/
       data xsym( 553) /  4/, ysym( 553) /  0/, psym( 553) /2/
       data xsym( 554) /  4/, ysym( 554) / 21/, psym( 554) /3/
       data xsym( 555) / 13/, ysym( 555) / 21/, psym( 555) /2/
       data xsym( 556) / 16/, ysym( 556) / 20/, psym( 556) /2/
       data xsym( 557) / 17/, ysym( 557) / 19/, psym( 557) /2/
       data xsym( 558) / 18/, ysym( 558) / 17/, psym( 558) /2/
       data xsym( 559) / 18/, ysym( 559) / 14/, psym( 559) /2/
       data xsym( 560) / 17/, ysym( 560) / 12/, psym( 560) /2/
       data xsym( 561) / 16/, ysym( 561) / 11/, psym( 561) /2/
       data xsym( 562) / 13/, ysym( 562) / 10/, psym( 562) /2/
       data xsym( 563) /  4/, ysym( 563) / 10/, psym( 563) /2/
C  81 "Q"
       data lsym( 81,1) / 564/, lsym( 81,2) /23/
       data xsym( 564) /  9/, ysym( 564) / 21/, psym( 564) /3/
       data xsym( 565) /  7/, ysym( 565) / 20/, psym( 565) /2/
       data xsym( 566) /  5/, ysym( 566) / 18/, psym( 566) /2/
       data xsym( 567) /  4/, ysym( 567) / 16/, psym( 567) /2/
       data xsym( 568) /  3/, ysym( 568) / 13/, psym( 568) /2/
       data xsym( 569) /  3/, ysym( 569) /  8/, psym( 569) /2/
       data xsym( 570) /  4/, ysym( 570) /  5/, psym( 570) /2/
       data xsym( 571) /  5/, ysym( 571) /  3/, psym( 571) /2/
       data xsym( 572) /  7/, ysym( 572) /  1/, psym( 572) /2/
       data xsym( 573) /  9/, ysym( 573) /  0/, psym( 573) /2/
       data xsym( 574) / 13/, ysym( 574) /  0/, psym( 574) /2/
       data xsym( 575) / 15/, ysym( 575) /  1/, psym( 575) /2/
       data xsym( 576) / 17/, ysym( 576) /  3/, psym( 576) /2/
       data xsym( 577) / 18/, ysym( 577) /  5/, psym( 577) /2/
       data xsym( 578) / 19/, ysym( 578) /  8/, psym( 578) /2/
       data xsym( 579) / 19/, ysym( 579) / 13/, psym( 579) /2/
       data xsym( 580) / 18/, ysym( 580) / 16/, psym( 580) /2/
       data xsym( 581) / 17/, ysym( 581) / 18/, psym( 581) /2/
       data xsym( 582) / 15/, ysym( 582) / 20/, psym( 582) /2/
       data xsym( 583) / 13/, ysym( 583) / 21/, psym( 583) /2/
       data xsym( 584) /  9/, ysym( 584) / 21/, psym( 584) /2/
       data xsym( 585) / 12/, ysym( 585) /  4/, psym( 585) /3/
       data xsym( 586) / 18/, ysym( 586) / -2/, psym( 586) /2/
C  82 "R"
       data lsym( 82,1) / 587/, lsym( 82,2) /14/
       data xsym( 587) /  4/, ysym( 587) / 21/, psym( 587) /3/
       data xsym( 588) /  4/, ysym( 588) /  0/, psym( 588) /2/
       data xsym( 589) /  4/, ysym( 589) / 21/, psym( 589) /3/
       data xsym( 590) / 13/, ysym( 590) / 21/, psym( 590) /2/
       data xsym( 591) / 16/, ysym( 591) / 20/, psym( 591) /2/
       data xsym( 592) / 17/, ysym( 592) / 19/, psym( 592) /2/
       data xsym( 593) / 18/, ysym( 593) / 17/, psym( 593) /2/
       data xsym( 594) / 18/, ysym( 594) / 15/, psym( 594) /2/
       data xsym( 595) / 17/, ysym( 595) / 13/, psym( 595) /2/
       data xsym( 596) / 16/, ysym( 596) / 12/, psym( 596) /2/
       data xsym( 597) / 13/, ysym( 597) / 11/, psym( 597) /2/
       data xsym( 598) /  4/, ysym( 598) / 11/, psym( 598) /2/
       data xsym( 599) / 11/, ysym( 599) / 11/, psym( 599) /3/
       data xsym( 600) / 18/, ysym( 600) /  0/, psym( 600) /2/
C  83 "S"
       data lsym( 83,1) / 601/, lsym( 83,2) /20/
       data xsym( 601) / 18/, ysym( 601) / 18/, psym( 601) /3/
       data xsym( 602) / 16/, ysym( 602) / 20/, psym( 602) /2/
       data xsym( 603) / 13/, ysym( 603) / 21/, psym( 603) /2/
       data xsym( 604) /  9/, ysym( 604) / 21/, psym( 604) /2/
       data xsym( 605) /  6/, ysym( 605) / 20/, psym( 605) /2/
       data xsym( 606) /  4/, ysym( 606) / 18/, psym( 606) /2/
       data xsym( 607) /  4/, ysym( 607) / 16/, psym( 607) /2/
       data xsym( 608) /  5/, ysym( 608) / 14/, psym( 608) /2/
       data xsym( 609) /  6/, ysym( 609) / 13/, psym( 609) /2/
       data xsym( 610) /  8/, ysym( 610) / 12/, psym( 610) /2/
       data xsym( 611) / 14/, ysym( 611) / 10/, psym( 611) /2/
       data xsym( 612) / 16/, ysym( 612) /  9/, psym( 612) /2/
       data xsym( 613) / 17/, ysym( 613) /  8/, psym( 613) /2/
       data xsym( 614) / 18/, ysym( 614) /  6/, psym( 614) /2/
       data xsym( 615) / 18/, ysym( 615) /  3/, psym( 615) /2/
       data xsym( 616) / 16/, ysym( 616) /  1/, psym( 616) /2/
       data xsym( 617) / 13/, ysym( 617) /  0/, psym( 617) /2/
       data xsym( 618) /  9/, ysym( 618) /  0/, psym( 618) /2/
       data xsym( 619) /  6/, ysym( 619) /  1/, psym( 619) /2/
       data xsym( 620) /  4/, ysym( 620) /  3/, psym( 620) /2/
C  84 "T"
       data lsym( 84,1) / 621/, lsym( 84,2) / 4/
       data xsym( 621) / 11/, ysym( 621) / 21/, psym( 621) /3/
       data xsym( 622) / 11/, ysym( 622) /  0/, psym( 622) /2/
       data xsym( 623) /  4/, ysym( 623) / 21/, psym( 623) /3/
       data xsym( 624) / 18/, ysym( 624) / 21/, psym( 624) /2/
C  85 "U"
       data lsym( 85,1) / 625/, lsym( 85,2) /10/
       data xsym( 625) /  4/, ysym( 625) / 21/, psym( 625) /3/
       data xsym( 626) /  4/, ysym( 626) /  6/, psym( 626) /2/
       data xsym( 627) /  5/, ysym( 627) /  3/, psym( 627) /2/
       data xsym( 628) /  7/, ysym( 628) /  1/, psym( 628) /2/
       data xsym( 629) / 10/, ysym( 629) /  0/, psym( 629) /2/
       data xsym( 630) / 12/, ysym( 630) /  0/, psym( 630) /2/
       data xsym( 631) / 15/, ysym( 631) /  1/, psym( 631) /2/
       data xsym( 632) / 17/, ysym( 632) /  3/, psym( 632) /2/
       data xsym( 633) / 18/, ysym( 633) /  6/, psym( 633) /2/
       data xsym( 634) / 18/, ysym( 634) / 21/, psym( 634) /2/
C  86 "V"
       data lsym( 86,1) / 635/, lsym( 86,2) / 4/
       data xsym( 635) /  3/, ysym( 635) / 21/, psym( 635) /3/
       data xsym( 636) / 11/, ysym( 636) /  0/, psym( 636) /2/
       data xsym( 637) / 19/, ysym( 637) / 21/, psym( 637) /3/
       data xsym( 638) / 11/, ysym( 638) /  0/, psym( 638) /2/
C  87 "W"
       data lsym( 87,1) / 639/, lsym( 87,2) / 8/
       data xsym( 639) /  1/, ysym( 639) / 21/, psym( 639) /3/
       data xsym( 640) /  6/, ysym( 640) /  0/, psym( 640) /2/
       data xsym( 641) / 11/, ysym( 641) / 21/, psym( 641) /3/
       data xsym( 642) /  6/, ysym( 642) /  0/, psym( 642) /2/
       data xsym( 643) / 11/, ysym( 643) / 21/, psym( 643) /3/
       data xsym( 644) / 16/, ysym( 644) /  0/, psym( 644) /2/
       data xsym( 645) / 21/, ysym( 645) / 21/, psym( 645) /3/
       data xsym( 646) / 16/, ysym( 646) /  0/, psym( 646) /2/
C  88 "X"
       data lsym( 88,1) / 647/, lsym( 88,2) / 4/
       data xsym( 647) /  4/, ysym( 647) / 21/, psym( 647) /3/
       data xsym( 648) / 18/, ysym( 648) /  0/, psym( 648) /2/
       data xsym( 649) / 18/, ysym( 649) / 21/, psym( 649) /3/
       data xsym( 650) /  4/, ysym( 650) /  0/, psym( 650) /2/
C  89 "Y"
       data lsym( 89,1) / 651/, lsym( 89,2) / 5/
       data xsym( 651) /  3/, ysym( 651) / 21/, psym( 651) /3/
       data xsym( 652) / 11/, ysym( 652) / 11/, psym( 652) /2/
       data xsym( 653) / 11/, ysym( 653) /  0/, psym( 653) /2/
       data xsym( 654) / 19/, ysym( 654) / 21/, psym( 654) /3/
       data xsym( 655) / 11/, ysym( 655) / 11/, psym( 655) /2/
C  90 "Z"
       data lsym( 90,1) / 656/, lsym( 90,2) / 6/
       data xsym( 656) / 18/, ysym( 656) / 21/, psym( 656) /3/
       data xsym( 657) /  4/, ysym( 657) /  0/, psym( 657) /2/
       data xsym( 658) /  4/, ysym( 658) / 21/, psym( 658) /3/
       data xsym( 659) / 18/, ysym( 659) / 21/, psym( 659) /2/
       data xsym( 660) /  4/, ysym( 660) /  0/, psym( 660) /3/
       data xsym( 661) / 18/, ysym( 661) /  0/, psym( 661) /2/
C  91 "["
       data lsym( 91,1) / 662/, lsym( 91,2) / 4/
       data xsym( 662) / 18/, ysym( 662) / 25/, psym( 662) /3/
       data xsym( 663) / 11/, ysym( 663) / 25/, psym( 663) /2/
       data xsym( 664) / 11/, ysym( 664) / -7/, psym( 664) /2/
       data xsym( 665) / 18/, ysym( 665) / -7/, psym( 665) /2/
C  92 "\"
       data lsym( 92,1) / 666/, lsym( 92,2) / 2/
       data xsym( 666) /  2/, ysym( 666) / 20/, psym( 666) /3/
       data xsym( 667) / 20/, ysym( 667) /  2/, psym( 667) /2/
C  93 "]"
       data lsym( 93,1) / 668/, lsym( 93,2) / 4/
       data xsym( 668) /  4/, ysym( 668) / 25/, psym( 668) /3/
       data xsym( 669) / 11/, ysym( 669) / 25/, psym( 669) /2/
       data xsym( 670) / 11/, ysym( 670) / -7/, psym( 670) /2/
       data xsym( 671) /  4/, ysym( 671) / -7/, psym( 671) /2/
C  94 "^"
       data lsym( 94,1) / 672/, lsym( 94,2) / 3/
       data xsym( 672) /  2/, ysym( 672) / 11/, psym( 672) /3/
       data xsym( 673) / 11/, ysym( 673) / 14/, psym( 673) /2/
       data xsym( 674) / 18/, ysym( 674) / 11/, psym( 674) /2/
C  95 "_"
       data lsym( 95,1) / 675/, lsym( 95,2) / 2/
       data xsym( 675) /  0/, ysym( 675) / -1/, psym( 675) /3/
       data xsym( 676) / 22/, ysym( 676) / -1/, psym( 676) /2/
C  96 "`"
       data lsym( 96,1) / 677/, lsym( 96,2) / 4/
       data xsym( 677) / 11/, ysym( 677) / 21/, psym( 677) /3/
       data xsym( 678) / 12/, ysym( 678) / 14/, psym( 678) /2/
       data xsym( 679) / 10/, ysym( 679) / 21/, psym( 679) /3/
       data xsym( 680) / 12/, ysym( 680) / 14/, psym( 680) /2/
C  97 "a"
       data lsym( 97,1) / 681/, lsym( 97,2) /16/
       data xsym( 681) / 18/, ysym( 681) / 14/, psym( 681) /3/
       data xsym( 682) / 18/, ysym( 682) /  0/, psym( 682) /2/
       data xsym( 683) / 18/, ysym( 683) / 11/, psym( 683) /3/
       data xsym( 684) / 16/, ysym( 684) / 13/, psym( 684) /2/
       data xsym( 685) / 14/, ysym( 685) / 14/, psym( 685) /2/
       data xsym( 686) / 11/, ysym( 686) / 14/, psym( 686) /2/
       data xsym( 687) /  9/, ysym( 687) / 13/, psym( 687) /2/
       data xsym( 688) /  7/, ysym( 688) / 11/, psym( 688) /2/
       data xsym( 689) /  6/, ysym( 689) /  8/, psym( 689) /2/
       data xsym( 690) /  6/, ysym( 690) /  6/, psym( 690) /2/
       data xsym( 691) /  7/, ysym( 691) /  3/, psym( 691) /2/
       data xsym( 692) /  9/, ysym( 692) /  1/, psym( 692) /2/
       data xsym( 693) / 11/, ysym( 693) /  0/, psym( 693) /2/
       data xsym( 694) / 14/, ysym( 694) /  0/, psym( 694) /2/
       data xsym( 695) / 16/, ysym( 695) /  1/, psym( 695) /2/
       data xsym( 696) / 18/, ysym( 696) /  3/, psym( 696) /2/
C  98 "b"
       data lsym( 98,1) / 697/, lsym( 98,2) /16/
       data xsym( 697) /  7/, ysym( 697) / 21/, psym( 697) /3/
       data xsym( 698) /  7/, ysym( 698) /  0/, psym( 698) /2/
       data xsym( 699) /  7/, ysym( 699) / 11/, psym( 699) /3/
       data xsym( 700) /  9/, ysym( 700) / 13/, psym( 700) /2/
       data xsym( 701) / 11/, ysym( 701) / 14/, psym( 701) /2/
       data xsym( 702) / 14/, ysym( 702) / 14/, psym( 702) /2/
       data xsym( 703) / 16/, ysym( 703) / 13/, psym( 703) /2/
       data xsym( 704) / 18/, ysym( 704) / 11/, psym( 704) /2/
       data xsym( 705) / 19/, ysym( 705) /  8/, psym( 705) /2/
       data xsym( 706) / 19/, ysym( 706) /  6/, psym( 706) /2/
       data xsym( 707) / 18/, ysym( 707) /  3/, psym( 707) /2/
       data xsym( 708) / 16/, ysym( 708) /  1/, psym( 708) /2/
       data xsym( 709) / 14/, ysym( 709) /  0/, psym( 709) /2/
       data xsym( 710) / 11/, ysym( 710) /  0/, psym( 710) /2/
       data xsym( 711) /  9/, ysym( 711) /  1/, psym( 711) /2/
       data xsym( 712) /  7/, ysym( 712) /  3/, psym( 712) /2/
C  99 "c"
       data lsym( 99,1) / 713/, lsym( 99,2) /14/
       data xsym( 713) / 18/, ysym( 713) / 11/, psym( 713) /3/
       data xsym( 714) / 16/, ysym( 714) / 13/, psym( 714) /2/
       data xsym( 715) / 14/, ysym( 715) / 14/, psym( 715) /2/
       data xsym( 716) / 11/, ysym( 716) / 14/, psym( 716) /2/
       data xsym( 717) /  9/, ysym( 717) / 13/, psym( 717) /2/
       data xsym( 718) /  7/, ysym( 718) / 11/, psym( 718) /2/
       data xsym( 719) /  6/, ysym( 719) /  8/, psym( 719) /2/
       data xsym( 720) /  6/, ysym( 720) /  6/, psym( 720) /2/
       data xsym( 721) /  7/, ysym( 721) /  3/, psym( 721) /2/
       data xsym( 722) /  9/, ysym( 722) /  1/, psym( 722) /2/
       data xsym( 723) / 11/, ysym( 723) /  0/, psym( 723) /2/
       data xsym( 724) / 14/, ysym( 724) /  0/, psym( 724) /2/
       data xsym( 725) / 16/, ysym( 725) /  1/, psym( 725) /2/
       data xsym( 726) / 18/, ysym( 726) /  3/, psym( 726) /2/
C 100 "d"
       data lsym(100,1) / 727/, lsym(100,2) /16/
       data xsym( 727) / 18/, ysym( 727) / 21/, psym( 727) /3/
       data xsym( 728) / 18/, ysym( 728) /  0/, psym( 728) /2/
       data xsym( 729) / 18/, ysym( 729) / 11/, psym( 729) /3/
       data xsym( 730) / 16/, ysym( 730) / 13/, psym( 730) /2/
       data xsym( 731) / 14/, ysym( 731) / 14/, psym( 731) /2/
       data xsym( 732) / 11/, ysym( 732) / 14/, psym( 732) /2/
       data xsym( 733) /  9/, ysym( 733) / 13/, psym( 733) /2/
       data xsym( 734) /  7/, ysym( 734) / 11/, psym( 734) /2/
       data xsym( 735) /  6/, ysym( 735) /  8/, psym( 735) /2/
       data xsym( 736) /  6/, ysym( 736) /  6/, psym( 736) /2/
       data xsym( 737) /  7/, ysym( 737) /  3/, psym( 737) /2/
       data xsym( 738) /  9/, ysym( 738) /  1/, psym( 738) /2/
       data xsym( 739) / 11/, ysym( 739) /  0/, psym( 739) /2/
       data xsym( 740) / 14/, ysym( 740) /  0/, psym( 740) /2/
       data xsym( 741) / 16/, ysym( 741) /  1/, psym( 741) /2/
       data xsym( 742) / 18/, ysym( 742) /  3/, psym( 742) /2/
C 101 "e"
       data lsym(101,1) / 743/, lsym(101,2) /17/
       data xsym( 743) /  6/, ysym( 743) /  8/, psym( 743) /3/
       data xsym( 744) / 18/, ysym( 744) /  8/, psym( 744) /2/
       data xsym( 745) / 18/, ysym( 745) / 10/, psym( 745) /2/
       data xsym( 746) / 17/, ysym( 746) / 12/, psym( 746) /2/
       data xsym( 747) / 16/, ysym( 747) / 13/, psym( 747) /2/
       data xsym( 748) / 14/, ysym( 748) / 14/, psym( 748) /2/
       data xsym( 749) / 11/, ysym( 749) / 14/, psym( 749) /2/
       data xsym( 750) /  9/, ysym( 750) / 13/, psym( 750) /2/
       data xsym( 751) /  7/, ysym( 751) / 11/, psym( 751) /2/
       data xsym( 752) /  6/, ysym( 752) /  8/, psym( 752) /2/
       data xsym( 753) /  6/, ysym( 753) /  6/, psym( 753) /2/
       data xsym( 754) /  7/, ysym( 754) /  3/, psym( 754) /2/
       data xsym( 755) /  9/, ysym( 755) /  1/, psym( 755) /2/
       data xsym( 756) / 11/, ysym( 756) /  0/, psym( 756) /2/
       data xsym( 757) / 14/, ysym( 757) /  0/, psym( 757) /2/
       data xsym( 758) / 16/, ysym( 758) /  1/, psym( 758) /2/
       data xsym( 759) / 18/, ysym( 759) /  3/, psym( 759) /2/
C 102 "f"
       data lsym(102,1) / 760/, lsym(102,2) / 7/
       data xsym( 760) / 16/, ysym( 760) / 21/, psym( 760) /3/
       data xsym( 761) / 14/, ysym( 761) / 21/, psym( 761) /2/
       data xsym( 762) / 12/, ysym( 762) / 20/, psym( 762) /2/
       data xsym( 763) / 11/, ysym( 763) / 17/, psym( 763) /2/
       data xsym( 764) / 11/, ysym( 764) /  0/, psym( 764) /2/
       data xsym( 765) /  8/, ysym( 765) / 14/, psym( 765) /3/
       data xsym( 766) / 15/, ysym( 766) / 14/, psym( 766) /2/
C 103 "g"
       data lsym(103,1) / 767/, lsym(103,2) /21/
       data xsym( 767) / 18/, ysym( 767) / 14/, psym( 767) /3/
       data xsym( 768) / 18/, ysym( 768) / -2/, psym( 768) /2/
       data xsym( 769) / 17/, ysym( 769) / -5/, psym( 769) /2/
       data xsym( 770) / 16/, ysym( 770) / -6/, psym( 770) /2/
       data xsym( 771) / 14/, ysym( 771) / -7/, psym( 771) /2/
       data xsym( 772) / 11/, ysym( 772) / -7/, psym( 772) /2/
       data xsym( 773) /  9/, ysym( 773) / -6/, psym( 773) /2/
       data xsym( 774) / 18/, ysym( 774) / 11/, psym( 774) /3/
       data xsym( 775) / 16/, ysym( 775) / 13/, psym( 775) /2/
       data xsym( 776) / 14/, ysym( 776) / 14/, psym( 776) /2/
       data xsym( 777) / 11/, ysym( 777) / 14/, psym( 777) /2/
       data xsym( 778) /  9/, ysym( 778) / 13/, psym( 778) /2/
       data xsym( 779) /  7/, ysym( 779) / 11/, psym( 779) /2/
       data xsym( 780) /  6/, ysym( 780) /  8/, psym( 780) /2/
       data xsym( 781) /  6/, ysym( 781) /  6/, psym( 781) /2/
       data xsym( 782) /  7/, ysym( 782) /  3/, psym( 782) /2/
       data xsym( 783) /  9/, ysym( 783) /  1/, psym( 783) /2/
       data xsym( 784) / 11/, ysym( 784) /  0/, psym( 784) /2/
       data xsym( 785) / 14/, ysym( 785) /  0/, psym( 785) /2/
       data xsym( 786) / 16/, ysym( 786) /  1/, psym( 786) /2/
       data xsym( 787) / 18/, ysym( 787) /  3/, psym( 787) /2/
C 104 "h"
       data lsym(104,1) / 788/, lsym(104,2) / 9/
       data xsym( 788) /  7/, ysym( 788) / 21/, psym( 788) /3/
       data xsym( 789) /  7/, ysym( 789) /  0/, psym( 789) /2/
       data xsym( 790) /  7/, ysym( 790) / 10/, psym( 790) /3/
       data xsym( 791) / 10/, ysym( 791) / 13/, psym( 791) /2/
       data xsym( 792) / 12/, ysym( 792) / 14/, psym( 792) /2/
       data xsym( 793) / 15/, ysym( 793) / 14/, psym( 793) /2/
       data xsym( 794) / 17/, ysym( 794) / 13/, psym( 794) /2/
       data xsym( 795) / 18/, ysym( 795) / 10/, psym( 795) /2/
       data xsym( 796) / 18/, ysym( 796) /  0/, psym( 796) /2/
C 105 "i"
       data lsym(105,1) / 797/, lsym(105,2) / 7/
       data xsym( 797) / 10/, ysym( 797) / 21/, psym( 797) /3/
       data xsym( 798) / 11/, ysym( 798) / 20/, psym( 798) /2/
       data xsym( 799) / 12/, ysym( 799) / 21/, psym( 799) /2/
       data xsym( 800) / 11/, ysym( 800) / 22/, psym( 800) /2/
       data xsym( 801) / 10/, ysym( 801) / 21/, psym( 801) /2/
       data xsym( 802) / 11/, ysym( 802) / 14/, psym( 802) /3/
       data xsym( 803) / 11/, ysym( 803) /  0/, psym( 803) /2/
C 106 "j"
       data lsym(106,1) / 804/, lsym(106,2) /10/
       data xsym( 804) / 10/, ysym( 804) / 21/, psym( 804) /3/
       data xsym( 805) / 11/, ysym( 805) / 20/, psym( 805) /2/
       data xsym( 806) / 12/, ysym( 806) / 21/, psym( 806) /2/
       data xsym( 807) / 11/, ysym( 807) / 22/, psym( 807) /2/
       data xsym( 808) / 10/, ysym( 808) / 21/, psym( 808) /2/
       data xsym( 809) / 11/, ysym( 809) / 14/, psym( 809) /3/
       data xsym( 810) / 11/, ysym( 810) /  0/, psym( 810) /2/
       data xsym( 811) / 10/, ysym( 811) / -3/, psym( 811) /2/
       data xsym( 812) /  8/, ysym( 812) / -4/, psym( 812) /2/
       data xsym( 813) /  6/, ysym( 813) / -4/, psym( 813) /2/
C 107 "k"
       data lsym(107,1) / 814/, lsym(107,2) / 6/
       data xsym( 814) /  8/, ysym( 814) / 21/, psym( 814) /3/
       data xsym( 815) /  8/, ysym( 815) /  0/, psym( 815) /2/
       data xsym( 816) / 18/, ysym( 816) / 14/, psym( 816) /3/
       data xsym( 817) /  8/, ysym( 817) /  4/, psym( 817) /2/
       data xsym( 818) / 12/, ysym( 818) /  8/, psym( 818) /3/
       data xsym( 819) / 19/, ysym( 819) /  0/, psym( 819) /2/
C 108 "l"
       data lsym(108,1) / 820/, lsym(108,2) / 2/
       data xsym( 820) / 11/, ysym( 820) / 21/, psym( 820) /3/
       data xsym( 821) / 11/, ysym( 821) /  0/, psym( 821) /2/
C 109 "m"
       data lsym(109,1) / 822/, lsym(109,2) /16/
       data xsym( 822) /  0/, ysym( 822) / 14/, psym( 822) /3/
       data xsym( 823) /  0/, ysym( 823) /  0/, psym( 823) /2/
       data xsym( 824) /  0/, ysym( 824) / 10/, psym( 824) /3/
       data xsym( 825) /  3/, ysym( 825) / 13/, psym( 825) /2/
       data xsym( 826) /  5/, ysym( 826) / 14/, psym( 826) /2/
       data xsym( 827) /  8/, ysym( 827) / 14/, psym( 827) /2/
       data xsym( 828) / 10/, ysym( 828) / 13/, psym( 828) /2/
       data xsym( 829) / 11/, ysym( 829) / 10/, psym( 829) /2/
       data xsym( 830) / 11/, ysym( 830) /  0/, psym( 830) /2/
       data xsym( 831) / 11/, ysym( 831) / 10/, psym( 831) /3/
       data xsym( 832) / 14/, ysym( 832) / 13/, psym( 832) /2/
       data xsym( 833) / 16/, ysym( 833) / 14/, psym( 833) /2/
       data xsym( 834) / 19/, ysym( 834) / 14/, psym( 834) /2/
       data xsym( 835) / 21/, ysym( 835) / 13/, psym( 835) /2/
       data xsym( 836) / 22/, ysym( 836) / 10/, psym( 836) /2/
       data xsym( 837) / 22/, ysym( 837) /  0/, psym( 837) /2/
C 110 "n"
       data lsym(110,1) / 838/, lsym(110,2) / 9/
       data xsym( 838) /  6/, ysym( 838) / 14/, psym( 838) /3/
       data xsym( 839) /  6/, ysym( 839) /  0/, psym( 839) /2/
       data xsym( 840) /  6/, ysym( 840) / 10/, psym( 840) /3/
       data xsym( 841) /  9/, ysym( 841) / 13/, psym( 841) /2/
       data xsym( 842) / 11/, ysym( 842) / 14/, psym( 842) /2/
       data xsym( 843) / 14/, ysym( 843) / 14/, psym( 843) /2/
       data xsym( 844) / 16/, ysym( 844) / 13/, psym( 844) /2/
       data xsym( 845) / 17/, ysym( 845) / 10/, psym( 845) /2/
       data xsym( 846) / 17/, ysym( 846) /  0/, psym( 846) /2/
C 111 "o"
       data lsym(111,1) / 847/, lsym(111,2) /17/
       data xsym( 847) / 10/, ysym( 847) / 14/, psym( 847) /3/
       data xsym( 848) /  8/, ysym( 848) / 13/, psym( 848) /2/
       data xsym( 849) /  6/, ysym( 849) / 11/, psym( 849) /2/
       data xsym( 850) /  5/, ysym( 850) /  8/, psym( 850) /2/
       data xsym( 851) /  5/, ysym( 851) /  6/, psym( 851) /2/
       data xsym( 852) /  6/, ysym( 852) /  3/, psym( 852) /2/
       data xsym( 853) /  8/, ysym( 853) /  1/, psym( 853) /2/
       data xsym( 854) / 10/, ysym( 854) /  0/, psym( 854) /2/
       data xsym( 855) / 13/, ysym( 855) /  0/, psym( 855) /2/
       data xsym( 856) / 15/, ysym( 856) /  1/, psym( 856) /2/
       data xsym( 857) / 17/, ysym( 857) /  3/, psym( 857) /2/
       data xsym( 858) / 18/, ysym( 858) /  6/, psym( 858) /2/
       data xsym( 859) / 18/, ysym( 859) /  8/, psym( 859) /2/
       data xsym( 860) / 17/, ysym( 860) / 11/, psym( 860) /2/
       data xsym( 861) / 15/, ysym( 861) / 13/, psym( 861) /2/
       data xsym( 862) / 13/, ysym( 862) / 14/, psym( 862) /2/
       data xsym( 863) / 10/, ysym( 863) / 14/, psym( 863) /2/
C 112 "p"
       data lsym(112,1) / 864/, lsym(112,2) /16/
       data xsym( 864) /  7/, ysym( 864) / 14/, psym( 864) /3/
       data xsym( 865) /  7/, ysym( 865) / -7/, psym( 865) /2/
       data xsym( 866) /  7/, ysym( 866) / 11/, psym( 866) /3/
       data xsym( 867) /  9/, ysym( 867) / 13/, psym( 867) /2/
       data xsym( 868) / 11/, ysym( 868) / 14/, psym( 868) /2/
       data xsym( 869) / 14/, ysym( 869) / 14/, psym( 869) /2/
       data xsym( 870) / 16/, ysym( 870) / 13/, psym( 870) /2/
       data xsym( 871) / 18/, ysym( 871) / 11/, psym( 871) /2/
       data xsym( 872) / 19/, ysym( 872) /  8/, psym( 872) /2/
       data xsym( 873) / 19/, ysym( 873) /  6/, psym( 873) /2/
       data xsym( 874) / 18/, ysym( 874) /  3/, psym( 874) /2/
       data xsym( 875) / 16/, ysym( 875) /  1/, psym( 875) /2/
       data xsym( 876) / 14/, ysym( 876) /  0/, psym( 876) /2/
       data xsym( 877) / 11/, ysym( 877) /  0/, psym( 877) /2/
       data xsym( 878) /  9/, ysym( 878) /  1/, psym( 878) /2/
       data xsym( 879) /  7/, ysym( 879) /  3/, psym( 879) /2/
C 113 "q"
       data lsym(113,1) / 880/, lsym(113,2) /16/
       data xsym( 880) / 18/, ysym( 880) / 14/, psym( 880) /3/
       data xsym( 881) / 18/, ysym( 881) / -7/, psym( 881) /2/
       data xsym( 882) / 18/, ysym( 882) / 11/, psym( 882) /3/
       data xsym( 883) / 16/, ysym( 883) / 13/, psym( 883) /2/
       data xsym( 884) / 14/, ysym( 884) / 14/, psym( 884) /2/
       data xsym( 885) / 11/, ysym( 885) / 14/, psym( 885) /2/
       data xsym( 886) /  9/, ysym( 886) / 13/, psym( 886) /2/
       data xsym( 887) /  7/, ysym( 887) / 11/, psym( 887) /2/
       data xsym( 888) /  6/, ysym( 888) /  8/, psym( 888) /2/
       data xsym( 889) /  6/, ysym( 889) /  6/, psym( 889) /2/
       data xsym( 890) /  7/, ysym( 890) /  3/, psym( 890) /2/
       data xsym( 891) /  9/, ysym( 891) /  1/, psym( 891) /2/
       data xsym( 892) / 11/, ysym( 892) /  0/, psym( 892) /2/
       data xsym( 893) / 14/, ysym( 893) /  0/, psym( 893) /2/
       data xsym( 894) / 16/, ysym( 894) /  1/, psym( 894) /2/
       data xsym( 895) / 18/, ysym( 895) /  3/, psym( 895) /2/
C 114 "r"
       data lsym(114,1) / 896/, lsym(114,2) / 7/
       data xsym( 896) /  8/, ysym( 896) / 14/, psym( 896) /3/
       data xsym( 897) /  8/, ysym( 897) /  0/, psym( 897) /2/
       data xsym( 898) /  8/, ysym( 898) /  8/, psym( 898) /3/
       data xsym( 899) /  9/, ysym( 899) / 11/, psym( 899) /2/
       data xsym( 900) / 11/, ysym( 900) / 13/, psym( 900) /2/
       data xsym( 901) / 13/, ysym( 901) / 14/, psym( 901) /2/
       data xsym( 902) / 16/, ysym( 902) / 14/, psym( 902) /2/
C 115 "s"
       data lsym(115,1) / 903/, lsym(115,2) /17/
       data xsym( 903) / 17/, ysym( 903) / 11/, psym( 903) /3/
       data xsym( 904) / 16/, ysym( 904) / 13/, psym( 904) /2/
       data xsym( 905) / 13/, ysym( 905) / 14/, psym( 905) /2/
       data xsym( 906) / 10/, ysym( 906) / 14/, psym( 906) /2/
       data xsym( 907) /  7/, ysym( 907) / 13/, psym( 907) /2/
       data xsym( 908) /  6/, ysym( 908) / 11/, psym( 908) /2/
       data xsym( 909) /  7/, ysym( 909) /  9/, psym( 909) /2/
       data xsym( 910) /  9/, ysym( 910) /  8/, psym( 910) /2/
       data xsym( 911) / 14/, ysym( 911) /  7/, psym( 911) /2/
       data xsym( 912) / 16/, ysym( 912) /  6/, psym( 912) /2/
       data xsym( 913) / 17/, ysym( 913) /  4/, psym( 913) /2/
       data xsym( 914) / 17/, ysym( 914) /  3/, psym( 914) /2/
       data xsym( 915) / 16/, ysym( 915) /  1/, psym( 915) /2/
       data xsym( 916) / 13/, ysym( 916) /  0/, psym( 916) /2/
       data xsym( 917) / 10/, ysym( 917) /  0/, psym( 917) /2/
       data xsym( 918) /  7/, ysym( 918) /  1/, psym( 918) /2/
       data xsym( 919) /  6/, ysym( 919) /  3/, psym( 919) /2/
C 116 "t"
       data lsym(116,1) / 920/, lsym(116,2) / 7/
       data xsym( 920) / 11/, ysym( 920) / 21/, psym( 920) /3/
       data xsym( 921) / 11/, ysym( 921) /  4/, psym( 921) /2/
       data xsym( 922) / 12/, ysym( 922) /  1/, psym( 922) /2/
       data xsym( 923) / 14/, ysym( 923) /  0/, psym( 923) /2/
       data xsym( 924) / 16/, ysym( 924) /  0/, psym( 924) /2/
       data xsym( 925) /  8/, ysym( 925) / 14/, psym( 925) /3/
       data xsym( 926) / 15/, ysym( 926) / 14/, psym( 926) /2/
C 117 "u"
       data lsym(117,1) / 927/, lsym(117,2) / 9/
       data xsym( 927) /  6/, ysym( 927) / 14/, psym( 927) /3/
       data xsym( 928) /  6/, ysym( 928) /  4/, psym( 928) /2/
       data xsym( 929) /  7/, ysym( 929) /  1/, psym( 929) /2/
       data xsym( 930) /  9/, ysym( 930) /  0/, psym( 930) /2/
       data xsym( 931) / 12/, ysym( 931) /  0/, psym( 931) /2/
       data xsym( 932) / 14/, ysym( 932) /  1/, psym( 932) /2/
       data xsym( 933) / 17/, ysym( 933) /  4/, psym( 933) /2/
       data xsym( 934) / 17/, ysym( 934) / 14/, psym( 934) /3/
       data xsym( 935) / 17/, ysym( 935) /  0/, psym( 935) /2/
C 118 "v"
       data lsym(118,1) / 936/, lsym(118,2) / 4/
       data xsym( 936) /  5/, ysym( 936) / 14/, psym( 936) /3/
       data xsym( 937) / 11/, ysym( 937) /  0/, psym( 937) /2/
       data xsym( 938) / 17/, ysym( 938) / 14/, psym( 938) /3/
       data xsym( 939) / 11/, ysym( 939) /  0/, psym( 939) /2/
C 119 "w"
       data lsym(119,1) / 940/, lsym(119,2) / 8/
       data xsym( 940) /  3/, ysym( 940) / 14/, psym( 940) /3/
       data xsym( 941) /  7/, ysym( 941) /  0/, psym( 941) /2/
       data xsym( 942) / 11/, ysym( 942) / 14/, psym( 942) /3/
       data xsym( 943) /  7/, ysym( 943) /  0/, psym( 943) /2/
       data xsym( 944) / 11/, ysym( 944) / 14/, psym( 944) /3/
       data xsym( 945) / 15/, ysym( 945) /  0/, psym( 945) /2/
       data xsym( 946) / 19/, ysym( 946) / 14/, psym( 946) /3/
       data xsym( 947) / 15/, ysym( 947) /  0/, psym( 947) /2/
C 120 "x"
       data lsym(120,1) / 948/, lsym(120,2) / 4/
       data xsym( 948) /  6/, ysym( 948) / 14/, psym( 948) /3/
       data xsym( 949) / 17/, ysym( 949) /  0/, psym( 949) /2/
       data xsym( 950) / 17/, ysym( 950) / 14/, psym( 950) /3/
       data xsym( 951) /  6/, ysym( 951) /  0/, psym( 951) /2/
C 121 "y"
       data lsym(121,1) / 952/, lsym(121,2) / 8/
       data xsym( 952) /  5/, ysym( 952) / 14/, psym( 952) /3/
       data xsym( 953) / 11/, ysym( 953) /  0/, psym( 953) /2/
       data xsym( 954) / 17/, ysym( 954) / 14/, psym( 954) /3/
       data xsym( 955) / 11/, ysym( 955) /  0/, psym( 955) /2/
       data xsym( 956) /  9/, ysym( 956) / -4/, psym( 956) /2/
       data xsym( 957) /  7/, ysym( 957) / -6/, psym( 957) /2/
       data xsym( 958) /  5/, ysym( 958) / -7/, psym( 958) /2/
       data xsym( 959) /  4/, ysym( 959) / -7/, psym( 959) /2/
C 122 "z"
       data lsym(122,1) / 960/, lsym(122,2) / 6/
       data xsym( 960) / 17/, ysym( 960) / 14/, psym( 960) /3/
       data xsym( 961) /  6/, ysym( 961) /  0/, psym( 961) /2/
       data xsym( 962) /  6/, ysym( 962) / 14/, psym( 962) /3/
       data xsym( 963) / 17/, ysym( 963) / 14/, psym( 963) /2/
       data xsym( 964) /  6/, ysym( 964) /  0/, psym( 964) /3/
       data xsym( 965) / 17/, ysym( 965) /  0/, psym( 965) /2/
C 123 "{"
       data lsym(123,1) / 966/, lsym(123,2) /19/
       data xsym( 966) /  9/, ysym( 966) / 25/, psym( 966) /3/
       data xsym( 967) /  7/, ysym( 967) / 24/, psym( 967) /2/
       data xsym( 968) /  6/, ysym( 968) / 22/, psym( 968) /2/
       data xsym( 969) /  6/, ysym( 969) / 20/, psym( 969) /2/
       data xsym( 970) /  7/, ysym( 970) / 18/, psym( 970) /2/
       data xsym( 971) /  8/, ysym( 971) / 17/, psym( 971) /2/
       data xsym( 972) /  9/, ysym( 972) / 15/, psym( 972) /2/
       data xsym( 973) /  9/, ysym( 973) / 13/, psym( 973) /2/
       data xsym( 974) /  8/, ysym( 974) / 11/, psym( 974) /2/
       data xsym( 975) /  4/, ysym( 975) /  9/, psym( 975) /2/
       data xsym( 976) /  8/, ysym( 976) /  7/, psym( 976) /2/
       data xsym( 977) /  9/, ysym( 977) /  5/, psym( 977) /2/
       data xsym( 978) /  9/, ysym( 978) /  3/, psym( 978) /2/
       data xsym( 979) /  8/, ysym( 979) /  1/, psym( 979) /2/
       data xsym( 980) /  7/, ysym( 980) /  0/, psym( 980) /2/
       data xsym( 981) /  6/, ysym( 981) / -2/, psym( 981) /2/
       data xsym( 982) /  6/, ysym( 982) / -4/, psym( 982) /2/
       data xsym( 983) /  7/, ysym( 983) / -6/, psym( 983) /2/
       data xsym( 984) /  9/, ysym( 984) / -8/, psym( 984) /2/
C 124 "|"
       data lsym(124,1) / 985/, lsym(124,2) / 4/
       data xsym( 985) / 11/, ysym( 985) / 22/, psym( 985) /3/
       data xsym( 986) / 11/, ysym( 986) / 13/, psym( 986) /2/
       data xsym( 987) / 11/, ysym( 987) /  9/, psym( 987) /3/
       data xsym( 988) / 11/, ysym( 988) /  0/, psym( 988) /2/
C 125 "}"
       data lsym(125,1) / 989/, lsym(125,2) /19/
       data xsym( 989) / 13/, ysym( 989) / 25/, psym( 989) /3/
       data xsym( 990) / 15/, ysym( 990) / 24/, psym( 990) /2/
       data xsym( 991) / 16/, ysym( 991) / 22/, psym( 991) /2/
       data xsym( 992) / 16/, ysym( 992) / 20/, psym( 992) /2/
       data xsym( 993) / 15/, ysym( 993) / 18/, psym( 993) /2/
       data xsym( 994) / 14/, ysym( 994) / 17/, psym( 994) /2/
       data xsym( 995) / 13/, ysym( 995) / 15/, psym( 995) /2/
       data xsym( 996) / 13/, ysym( 996) / 13/, psym( 996) /2/
       data xsym( 997) / 14/, ysym( 997) / 11/, psym( 997) /2/
       data xsym( 998) / 18/, ysym( 998) /  9/, psym( 998) /2/
       data xsym( 999) / 14/, ysym( 999) /  7/, psym( 999) /2/
       data xsym(1000) / 13/, ysym(1000) /  5/, psym(1000) /2/
       data xsym(1001) / 13/, ysym(1001) /  3/, psym(1001) /2/
       data xsym(1002) / 14/, ysym(1002) /  1/, psym(1002) /2/
       data xsym(1003) / 15/, ysym(1003) /  0/, psym(1003) /2/
       data xsym(1004) / 16/, ysym(1004) / -2/, psym(1004) /2/
       data xsym(1005) / 16/, ysym(1005) / -4/, psym(1005) /2/
       data xsym(1006) / 15/, ysym(1006) / -6/, psym(1006) /2/
       data xsym(1007) / 13/, ysym(1007) / -7/, psym(1007) /2/
C 126 "~"
       data lsym(126,1) /1008/, lsym(126,2) /11/
       data xsym(1008) /  3/, ysym(1008) /  6/, psym(1008) /3/
       data xsym(1009) /  3/, ysym(1009) /  8/, psym(1009) /2/
       data xsym(1010) /  4/, ysym(1010) / 11/, psym(1010) /2/
       data xsym(1011) /  6/, ysym(1011) / 12/, psym(1011) /2/
       data xsym(1012) /  8/, ysym(1012) / 12/, psym(1012) /2/
       data xsym(1013) / 10/, ysym(1013) / 11/, psym(1013) /2/
       data xsym(1014) / 14/, ysym(1014) /  8/, psym(1014) /2/
       data xsym(1015) / 16/, ysym(1015) /  7/, psym(1015) /2/
       data xsym(1016) / 18/, ysym(1016) /  7/, psym(1016) /2/
       data xsym(1017) / 20/, ysym(1017) /  8/, psym(1017) /2/
       data xsym(1018) / 21/, ysym(1018) / 10/, psym(1018) /2/
C 127 ""
       data lsym(127,1) /1019/, lsym(127,2) / 5/
       data xsym(1019) /  0/, ysym(1019) /  0/, psym(1019) /3/
       data xsym(1020) / 21/, ysym(1020) /  0/, psym(1020) /2/
       data xsym(1021) / 21/, ysym(1021) / 21/, psym(1021) /2/
       data xsym(1022) /  0/, ysym(1022) / 21/, psym(1022) /2/
       data xsym(1023) /  0/, ysym(1023) /  0/, psym(1023) /2/
C   0
       data lcen(  0,1) /   1/, lcen(  0,2) / 8/
       data xcen(   1) /  0/, ycen(   1) / 10/, pcen(   1) /3/
       data xcen(   2) / 10/, ycen(   2) / 10/, pcen(   2) /2/
       data xcen(   3) / 10/, ycen(   3) /-10/, pcen(   3) /2/
       data xcen(   4) /-10/, ycen(   4) /-10/, pcen(   4) /2/
       data xcen(   5) /-10/, ycen(   5) / 10/, pcen(   5) /2/
       data xcen(   6) /  0/, ycen(   6) / 10/, pcen(   6) /2/
       data xcen(   7) /  0/, ycen(   7) /  0/, pcen(   7) /2/
       data xcen(   8) /  0/, ycen(   8) /  0/, pcen(   8) /3/
C   1
       data lcen(  1,1) /   9/, lcen(  1,2) /12/
       data xcen(   9) /  0/, ycen(   9) /  0/, pcen(   9) /3/
       data xcen(  10) /  0/, ycen(  10) / 10/, pcen(  10) /2/
       data xcen(  11) /  4/, ycen(  11) / 10/, pcen(  11) /2/
       data xcen(  12) / 10/, ycen(  12) /  4/, pcen(  12) /2/
       data xcen(  13) / 10/, ycen(  13) / -4/, pcen(  13) /2/
       data xcen(  14) /  4/, ycen(  14) /-10/, pcen(  14) /2/
       data xcen(  15) / -4/, ycen(  15) /-10/, pcen(  15) /2/
       data xcen(  16) /-10/, ycen(  16) / -4/, pcen(  16) /2/
       data xcen(  17) /-10/, ycen(  17) /  4/, pcen(  17) /2/
       data xcen(  18) / -4/, ycen(  18) / 10/, pcen(  18) /2/
       data xcen(  19) /  0/, ycen(  19) / 10/, pcen(  19) /2/
       data xcen(  20) /  0/, ycen(  20) /  0/, pcen(  20) /3/
C   2
       data lcen(  2,1) /  21/, lcen(  2,2) / 6/
       data xcen(  21) /  0/, ycen(  21) /  0/, pcen(  21) /3/
       data xcen(  22) /  0/, ycen(  22) / 10/, pcen(  22) /2/
       data xcen(  23) /  9/, ycen(  23) / -5/, pcen(  23) /2/
       data xcen(  24) / -9/, ycen(  24) / -5/, pcen(  24) /2/
       data xcen(  25) /  0/, ycen(  25) / 10/, pcen(  25) /2/
       data xcen(  26) /  0/, ycen(  26) /  0/, pcen(  26) /3/
C   3
       data lcen(  3,1) /  27/, lcen(  3,2) / 5/
       data xcen(  27) /  0/, ycen(  27) /-10/, pcen(  27) /3/
       data xcen(  28) /  0/, ycen(  28) / 10/, pcen(  28) /2/
       data xcen(  29) /-10/, ycen(  29) /  0/, pcen(  29) /3/
       data xcen(  30) / 10/, ycen(  30) /  0/, pcen(  30) /2/
       data xcen(  31) /  0/, ycen(  31) /  0/, pcen(  31) /3/
C   4
       data lcen(  4,1) /  32/, lcen(  4,2) / 5/
       data xcen(  32) / -7/, ycen(  32) / -7/, pcen(  32) /3/
       data xcen(  33) /  7/, ycen(  33) /  7/, pcen(  33) /2/
       data xcen(  34) / -7/, ycen(  34) /  7/, pcen(  34) /3/
       data xcen(  35) /  7/, ycen(  35) / -7/, pcen(  35) /2/
       data xcen(  36) /  0/, ycen(  36) /  0/, pcen(  36) /3/
C   5
       data lcen(  5,1) /  37/, lcen(  5,2) / 7/
       data xcen(  37) /  0/, ycen(  37) / 10/, pcen(  37) /3/
       data xcen(  38) / 10/, ycen(  38) /  0/, pcen(  38) /2/
       data xcen(  39) /  0/, ycen(  39) /-10/, pcen(  39) /2/
       data xcen(  40) /-10/, ycen(  40) /  0/, pcen(  40) /2/
       data xcen(  41) /  0/, ycen(  41) / 10/, pcen(  41) /2/
       data xcen(  42) /  0/, ycen(  42) /  0/, pcen(  42) /2/
       data xcen(  43) /  0/, ycen(  43) /  0/, pcen(  43) /3/
C   6
       data lcen(  6,1) /  44/, lcen(  6,2) / 6/
       data xcen(  44) /  0/, ycen(  44) /-10/, pcen(  44) /3/
       data xcen(  45) /  0/, ycen(  45) / 10/, pcen(  45) /2/
       data xcen(  46) / 10/, ycen(  46) /  0/, pcen(  46) /2/
       data xcen(  47) /-10/, ycen(  47) /  0/, pcen(  47) /2/
       data xcen(  48) /  0/, ycen(  48) / 10/, pcen(  48) /2/
       data xcen(  49) /  0/, ycen(  49) /  0/, pcen(  49) /3/
C   7
       data lcen(  7,1) /  50/, lcen(  7,2) / 5/
       data xcen(  50) /-10/, ycen(  50) /-10/, pcen(  50) /3/
       data xcen(  51) / 10/, ycen(  51) / 10/, pcen(  51) /2/
       data xcen(  52) /-10/, ycen(  52) / 10/, pcen(  52) /2/
       data xcen(  53) / 10/, ycen(  53) /-10/, pcen(  53) /2/
       data xcen(  54) /  0/, ycen(  54) /  0/, pcen(  54) /3/
C   8
       data lcen(  8,1) /  55/, lcen(  8,2) / 9/
       data xcen(  55) /  0/, ycen(  55) /  0/, pcen(  55) /3/
       data xcen(  56) /  0/, ycen(  56) / 10/, pcen(  56) /2/
       data xcen(  57) /  9/, ycen(  57) /  5/, pcen(  57) /2/
       data xcen(  58) /  9/, ycen(  58) / -5/, pcen(  58) /2/
       data xcen(  59) /  0/, ycen(  59) /-10/, pcen(  59) /2/
       data xcen(  60) / -9/, ycen(  60) / -5/, pcen(  60) /2/
       data xcen(  61) / -9/, ycen(  61) /  5/, pcen(  61) /2/
       data xcen(  62) /  0/, ycen(  62) / 10/, pcen(  62) /2/
       data xcen(  63) /  0/, ycen(  63) /  0/, pcen(  63) /3/
C   9
       data lcen(  9,1) /  64/, lcen(  9,2) / 6/
       data xcen(  64) / -7/, ycen(  64) /  7/, pcen(  64) /3/
       data xcen(  65) /  0/, ycen(  65) /  0/, pcen(  65) /2/
       data xcen(  66) /  0/, ycen(  66) /-10/, pcen(  66) /2/
       data xcen(  67) /  0/, ycen(  67) /  0/, pcen(  67) /3/
       data xcen(  68) /  7/, ycen(  68) /  7/, pcen(  68) /2/
       data xcen(  69) /  0/, ycen(  69) /  0/, pcen(  69) /3/
C  10
       data lcen( 10,1) /  70/, lcen( 10,2) /14/
       data xcen(  70) /  5/, ycen(  70) /  5/, pcen(  70) /3/
       data xcen(  71) /  5/, ycen(  71) / -5/, pcen(  71) /2/
       data xcen(  72) / -5/, ycen(  72) / -5/, pcen(  72) /2/
       data xcen(  73) / -5/, ycen(  73) /  5/, pcen(  73) /2/
       data xcen(  74) /  5/, ycen(  74) /  5/, pcen(  74) /2/
       data xcen(  75) /-10/, ycen(  75) / 10/, pcen(  75) /3/
       data xcen(  76) / -5/, ycen(  76) /  5/, pcen(  76) /2/
       data xcen(  77) /-10/, ycen(  77) /-10/, pcen(  77) /3/
       data xcen(  78) / -5/, ycen(  78) / -5/, pcen(  78) /2/
       data xcen(  79) / 10/, ycen(  79) /-10/, pcen(  79) /3/
       data xcen(  80) /  5/, ycen(  80) / -5/, pcen(  80) /2/
       data xcen(  81) /  0/, ycen(  81) /  0/, pcen(  81) /3/
       data xcen(  82) / 10/, ycen(  82) / 10/, pcen(  82) /2/
       data xcen(  83) /  0/, ycen(  83) /  0/, pcen(  83) /3/
C  11
       data lcen( 11,1) /  84/, lcen( 11,2) / 9/
       data xcen(  84) /-10/, ycen(  84) /  0/, pcen(  84) /3/
       data xcen(  85) / 10/, ycen(  85) /  0/, pcen(  85) /2/
       data xcen(  86) /  0/, ycen(  86) /-10/, pcen(  86) /3/
       data xcen(  87) /  0/, ycen(  87) / 10/, pcen(  87) /2/
       data xcen(  88) / -7/, ycen(  88) / -7/, pcen(  88) /3/
       data xcen(  89) /  7/, ycen(  89) /  7/, pcen(  89) /2/
       data xcen(  90) /  7/, ycen(  90) / -7/, pcen(  90) /3/
       data xcen(  91) / -7/, ycen(  91) /  7/, pcen(  91) /2/
       data xcen(  92) /  0/, ycen(  92) /  0/, pcen(  92) /3/
C  12
       data lcen( 12,1) /  93/, lcen( 12,2) / 6/
       data xcen(  93) /-10/, ycen(  93) / 10/, pcen(  93) /3/
       data xcen(  94) / 10/, ycen(  94) / 10/, pcen(  94) /2/
       data xcen(  95) /-10/, ycen(  95) /-10/, pcen(  95) /2/
       data xcen(  96) / 10/, ycen(  96) /-10/, pcen(  96) /2/
       data xcen(  97) /-10/, ycen(  97) / 10/, pcen(  97) /2/
       data xcen(  98) /  0/, ycen(  98) /  0/, pcen(  98) /3/
C  13
       data lcen( 13,1) /  99/, lcen( 13,2) / 3/
       data xcen(  99) /  0/, ycen(  99) /-10/, pcen(  99) /3/
       data xcen( 100) /  0/, ycen( 100) / 10/, pcen( 100) /2/
       data xcen( 101) /  0/, ycen( 101) /  0/, pcen( 101) /3/
C  14
       data lcen( 14,1) / 102/, lcen( 14,2) /10/
       data xcen( 102) /  0/, ycen( 102) /  0/, pcen( 102) /3/
       data xcen( 103) /  0/, ycen( 103) / 10/, pcen( 103) /2/
       data xcen( 104) /  9/, ycen( 104) / -5/, pcen( 104) /2/
       data xcen( 105) / -9/, ycen( 105) / -5/, pcen( 105) /2/
       data xcen( 106) /  0/, ycen( 106) / 10/, pcen( 106) /2/
       data xcen( 107) /  9/, ycen( 107) /  5/, pcen( 107) /3/
       data xcen( 108) /  0/, ycen( 108) /-10/, pcen( 108) /2/
       data xcen( 109) / -9/, ycen( 109) /  5/, pcen( 109) /2/
       data xcen( 110) /  9/, ycen( 110) /  5/, pcen( 110) /2/
       data xcen( 111) /  0/, ycen( 111) /  0/, pcen( 111) /3/

*
*   Bad input check
*
	if (height .le. 0.0) return
*
*   Initialise
*
	x = xin
	y = yin
	if (x .eq. 999.) call where (x, dum1, dum2)
	if (y .eq. 999.) call where (dum1, y, dum2)

	inteq = 0
	if (ntext .le. 0) then
*
*       Convert first 4 characters to integer equivalent
*
c            hold(1:1) = text(1:1)
c            hold(2:2) = text(2:2)
c            hold(3:3) = text(3:3)
c            hold(4:4) = text(4:4)
	    do 111,i=1,4
	    hold(i) = text(i)
	    ihold(I) = ichar(HOLD(I))
  111       inteq =  inteq + ihold(i)
	endif

	if (ntext .gt. -2) then
	    call rplot(x, y, 3)
	else
	    call rplot(x, y, 2)
	endif

	cosa = cos(theta*0.017453292519)*height
	sina = sin(theta*0.017453292519)*height

*
*   Character string
*
	if (ntext .gt. 0) then
	    do 100, n = 1, ntext

C                jchar = mod(ichar(text(n:n)), 128)
		jchar = mod(ichar(text(n)), 128)
*
*           Plot this character
*
		do 90, i = lsym(jchar,1), lsym(jchar,1) + lsym(jchar,2)
		    call rplot(x + xsym(i)*cosa/25. - ysym(i)*sina/25.,
     &                        y + ysym(i)*cosa/25. + xsym(i)*sina/25.,
     &                        psym(i))
90              continue

		x = x + cosa
		y = y + sina
		call rplot(x, y, 3)
100         continue

*
*   Plot one character
*
	else if (ntext .eq. 0) then
	    jchar = mod(inteq, 128)

	    do 200, i = lsym(jchar,1), lsym(jchar,1) + lsym(jchar,2)
		call rplot(x + xsym(i)*cosa/25. - ysym(i)*sina/25.,
     &                    y + ysym(i)*cosa/25. + xsym(i)*sina/25.,
     &                    psym(i))
200             continue

	    x = x + cosa
	    y = y + sina
	    call rplot(x, y, 3)

*
*   Plot centered character
*
	else if (ntext .lt. 0) then

	    jchar = mod(inteq, 128)

	    if (jchar .lt. 32) then
*
*       Non-printing ASCII - substitute special centered characters
*
		jchar = mod(jchar, 15)

		do 300, i = lcen(jchar,1), lcen(jchar,1)+lcen(jchar,2)
		    call rplot(x + xcen(i)*cosa/20. - ycen(i)*sina/20.,
     &                  y + ycen(i)*cosa/20. + xcen(i)*sina/20.,
     &                  pcen(i))
300             continue

		call rplot(x, y, 3)

	    else if (jchar .lt. 97 .or. jchar .gt. 122) then
*
*       Upper case letters, numbers, and punctuation
*
		x = x - 11.0*cosa/25. + 11.0*sina/25.
		y = y - 11.0*cosa/25. - 11.0*sina/25.

		do 400, i = lsym(jchar,1), lsym(jchar,1) + lsym(jchar,2)
		    call rplot(x + xsym(i)*cosa/25. - ysym(i)*sina/25.,
     &                  y + ysym(i)*cosa/25. + xsym(i)*sina/25.,
     &                  psym(i))
400             continue
		call rplot (x, y, 3)
	    else
*
*       Lower case letters
*
		x = x - 11.0*cosa/25. + 11.0*sina/25.
		y = y -  6.5*cosa/25. -  6.5*sina/25.

		do 500, i = lsym(jchar,1), lsym(jchar,1) + lsym(jchar,2)
		    call rplot(x + xsym(i)*cosa/25. - ysym(i)*sina/25.,
     &                  y + ysym(i)*cosa/25. + xsym(i)*sina/25.,
     &                  psym(i))
500             continue
		call rplot (x, y, 3)
	    endif
	end if

	return
	end
