function precip (args)
                                                                                                                            
expid    = subwrd(args,1)
output   = subwrd(args,2)
debug    = subwrd(args,3)
                                                                                                                            
* Define Seasons to Process
* -------------------------
seasons  = ''
       k = 4
while( k > 0 )
    season = subwrd(args,k)
if( season = '' )
    k = -1
else
    seasons = seasons % ' ' % season
k = k+1
endif
endwhile
'uppercase 'seasons
          seasons = result
                                                                                                                   

* Initialize
* ----------
'reinit'
'set display color white'
'set clab off'
'c'

* Get Precipitation Variables
* ---------------------------
'run getvar CN_PRCP MOIST'
        qname.1 = subwrd(result,1)
        qfile.1 = subwrd(result,2)
        scale.1 = subwrd(result,3)
        expdsc  = subwrd(result,4)
'run getvar LS_PRCP MOIST'
        qname.2 = subwrd(result,1)
        qfile.2 = subwrd(result,2)
        scale.2 = subwrd(result,3)
'run getvar AN_PRCP MOIST'
        qname.3 = subwrd(result,1)
        qfile.3 = subwrd(result,2)
        scale.3 = subwrd(result,3)

if( qname.1 = 'NULL' & qname.2  = 'NULL' & qname.3  = 'NULL')
   'run getvar TPREC MOIST'
           qname.1 = subwrd(result,1)
           qfile.1 = subwrd(result,2)
           scale.1 = subwrd(result,3)
           expdsc  = subwrd(result,4)
        components = false
               num = 1
else
        components = true
               num = 3
endif

'run getenv "GEOSUTIL"'
         geosutil = result
                                                                                                                            
'run getenv "VERIFICATION"'
         verification = result

* Ensure NAMES have no underscores
* --------------------------------
        m=1
while ( m<num+1 )
'fixname 'qname.m
          alias.m = result
say 'Alias #'m' = 'alias.m
        m = m+1
endwhile


* Experiment Datasets
* -------------------
if( qfile.1 != 'NULL' )
   'set dfile 'qfile.1
else
   if( qfile.2 != 'NULL' )
      'set dfile 'qfile.2
   else
      if( qfile.3 != 'NULL' )
         'set dfile 'qfile.3
      else
          return
      endif
   endif
endif

'setlons'
'set lat -90 90'

* Set BEGDATE and ENDDATE for Seasonal Calculations
* -------------------------------------------------
'setdates'

* Model Data Sets
* ---------------
if( components = 'true' )
    if( qfile.1 = 'NULL' )
       'define preccon = 0'
    else
       'set dfile 'qfile.1
       'set z 1'
       'sett'
       if( qname.1 != alias.1 ) ; 'rename 'qname.1 ' 'alias.1 ; endif
       'define preccon = 'alias.1'*'scale.1
    endif
                                                                                                                            
    if( qfile.2 = 'NULL' )
       'define precls = 0'
    else
       'set dfile 'qfile.2
       'set z 1'
       'sett'
       if( qname.2 != alias.2 ) ; 'rename 'qname.2 ' 'alias.2 ; endif
       'define precls  = 'alias.2'*'scale.2
    endif
                                                                                                                            
    if( qfile.3 = 'NULL' )
       'define precanv = 0'
    else
       'set dfile 'qfile.3
       'set z 1'
       'sett'
       if( qname.3 != alias.3 ) ; 'rename 'qname.3 ' 'alias.3 ; endif
       'define precanv = 'alias.3'*'scale.3
    endif
   'define   preacc = (preccon + precls + precanv)*86400'
   'define   precon = (preccon          + precanv)*86400'
*  'define   precon =  preccon                    *86400'
else
   'set dfile 'qfile.1
   'set z 1'
   'sett'
    if( qname.1 != alias.1 ) ; 'rename 'qname.1 ' 'alias.1 ; endif
   'define preacc = 'alias.1'*'scale.1'*86400'
   'define precon = 0'
endif
                                                                                                                            

'seasonal preacc geos'
'seasonal precon geos'


* Loop over Verification Datasets
* -------------------------------
'getnumrc 'geosutil'/plots/precip'
     rcinfo = result
     numrc  = subwrd( rcinfo,1 )
         k  = 1
while(   k <= numrc )
        loc = k + 1
     rcfile = subwrd( rcinfo,loc )
say 'rcfile = 'rcfile
'run getobs TPREC MOIST 'rcfile
          oname = subwrd(result,1)
        obsfile = subwrd(result,2)
         oscale = subwrd(result,3)
         obsdsc = subwrd(result,4)
         obsnam = subwrd(result,5)
      if( oname = 'NULL' ) ; return ; endif

'set dfile 'obsfile
'set z 1'
'getdates'
'define   precip = 'oname'*'oscale
'seasonal precip obs'



* Perform Taylor Plots
* --------------------
'set dfile 'qfile.1
'run getenv "TAYLOR"'
         taylor = result
if(      taylor = 'true' & obsnam = 'GPCP' )
'taylor preaccdjfgeos precipdjfobs djf 'expid
'taylor preaccjjageos precipjjaobs jja 'expid
'taylor preaccsongeos precipsonobs son 'expid
'taylor preaccmamgeos precipmamobs mam 'expid
'taylor preaccanngeos precipannobs ann 'expid

'taylor_write 'expid'    PRECIP 'output
'taylor_read   ErosC72   PRECIP 'verification
'taylor_read   F25d72    PRECIP 'verification
'taylor_read   G40C180   PRECIP 'verification
'taylor_read   MERRA     PRECIP 'verification
'taylor_read   MERRA2    PRECIP 'verification
                                                                                                   
*'taylor_read   RPIT     PRECIP 'verification
*'taylor_read   GFDL     PRECIP 'verification
*'taylor_read   CAM3     PRECIP 'verification

"taylor_plt 6 MERRA2 MERRA G40C180 F25d72 ErosC72 "expid" "output" PRECIP 'Total Precipitation vs "obsnam"' "debug
endif


* Loop over Seasons to Process
* ----------------------------
       m = 1
while( m > 0 )
    season = subwrd(seasons,m)
if( season = '' )
         m = -1
else
         m = m+1
         say 'Processing Season: 'season


* Perform Horizontal Plots
* ------------------------
'set gxout shaded'
'set csmooth on'


*'run 'geosutil'/plots/precip/precip_3 'expid' 'season' 'output' 'obsfile' 'obsdsc' 'expdsc
*'myprint -name 'output'/precip3_'obsnam'.'season
*'set vpage off'
*'set parea off'
* if( debug = "debug" )
*     say "Hit ENTER to continue"
*     pull flag
* endif
*'c'

*'run 'geosutil'/plots/precip/precip_1 'season' 'obsfile' 'obsdsc' 'expdsc
*'myprint -name 'output'/precip1_'obsnam'.'season
* if( debug = "debug" )
*     say "Hit ENTER to continue"
*     pull flag
* endif
*'c'

if( components = 'true' )

        flag = ""
while ( flag = "" )
'run 'geosutil'/plots/precip/precip_2 'season' 'expdsc
'myprint -name 'output'/precip2.'season
    if( debug = "debug" )
        say "Hit ENTER to continue"
        pull flag
    else
        flag = "next"
    endif
   'c'
endwhile

        flag = ""
while ( flag = "" )
'run 'geosutil'/plots/precip/precipz 'season' 'qfile.1' 'obsfile' 'obsnam' 'expdsc
'myprint -name 'output'/precipz_'obsnam'.'season
    if( debug = "debug" )
        say "Hit ENTER to continue"
        pull flag
    else
        flag = "next"
    endif
'c'
endwhile
endif

endif
endwhile

k = k + 1
endwhile
