[pyferret] 17/110: Upstream 1.1.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Fri Jul 28 08:41:45 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository pyferret.

commit 29b824f6f73e870bfc95d01d1ec77cb44501a6c9
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Sat May 9 22:27:04 2015 +0100

    Upstream 1.1.0
---
 Makefile                                           |   12 +-
 bench/TEST_SCRIPTS                                 |   10 +
 bench/TRASH_FILES                                  |   16 +-
 ...estCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc |  Bin 0 -> 9840 bytes
 bench/anew_global.cdl                              |   40 +
 bench/ansley_official.linux_err                    |  263 +-
 bench/ansley_official.linux_log                    | 5814 ++++++++++++++------
 bench/ansley_official.rhel6-64_err                 |  214 +-
 bench/ansley_official.rhel6-64_log                 | 4961 ++++++++++++-----
 bench/ansley_official.x86_64-linux_err             |  219 +-
 bench/ansley_official.x86_64-linux_log             | 4627 ++++++++++++----
 bench/badbounds_even.nc                            |  Bin 0 -> 844 bytes
 bench/badbounds_non_enclose.nc                     |  Bin 0 -> 868 bytes
 bench/badbounds_uneven.nc                          |  Bin 0 -> 792 bytes
 bench/bn691_bug_fixes.jnl                          |   75 +
 bench/bn69_bug_fixes.jnl                           |    4 +-
 bench/bn_all.jnl                                   |   30 +
 bench/bn_append_dsg.jnl                            |   30 +
 bench/bn_axis_viewports.jnl                        |   19 +-
 bench/bn_center_key_labels.jnl                     |   43 +
 bench/bn_conventions_history.jnl                   |   19 +
 bench/bn_date1900_array.jnl                        |   18 +
 bench/bn_dsg_e_x.jnl                               |   12 +
 bench/bn_global_atts.jnl                           |   29 +
 bench/bn_plot.jnl                                  |    2 +-
 bench/bn_polygon_log.jnl                           |   33 +
 bench/bn_show_outfile.jnl                          |   83 +
 bench/bn_spawn_size.jnl                            |   27 +
 bench/bn_vtree_outfile.jnl                         |  185 +
 bench/bn_vtree_outfile.sub                         |   19 +
 bench/bn_wgt_transform.jnl                         |   40 +
 bench/check_metafiles_rh6                          |   93 -
 bench/conventions_history_in.nc                    |  Bin 0 -> 984 bytes
 bench/err686_set_var_name.jnl                      |   12 +-
 bench/err691_bnds_case.jnl                         |   10 +
 bench/err69_arg_type_error.jnl                     |   17 +
 bench/err69_bad_bounds.jnl                         |   25 +
 bench/err69_const_array.jnl                        |   26 +
 bench/err69_countervar_context.jnl                 |   11 +
 bench/err69_ens_badvalue.jnl                       |   14 +
 bench/err69_fill_trans.jnl                         |   18 +
 bench/err69_if_then_split.jnl                      |   42 +
 bench/err69_isready_and_regridding.jnl             |   36 +
 bench/err69_isready_bugs.jnl                       |   28 +
 bench/err69_isready_status_errmsgs.jnl             |   15 +
 bench/err69_label_backspace.jnl                    |    7 +
 bench/err69_letd_dsetnum.jnl                       |    7 +
 bench/err69_levels_v.jnl                           |   14 +
 bench/err69_load_big_grid.jnl                      |   24 +
 bench/err69_long_string_to_xml.jnl                 |   12 +
 bench/err69_multi_label_ascii.jnl                  |   29 +
 bench/err69_plot_vs_labs.jnl                       |   21 +
 bench/err69_repeat_in_if.jnl                       |   55 +
 bench/err69_repl_scinot.jnl                        |   15 +
 bench/err69_ribbon_by_levels.jnl                   |   21 +
 bench/err69_ribbon_histogram.jnl                   |   23 +
 bench/err69_vtree_and_uvar_regrid.jnl              |    8 +
 bench/err69_vtree_cancel_axis.jnl                  |   19 +
 bench/err69_write_attribute.jnl                    |   62 +
 bench/global.nc                                    |  Bin 0 -> 1696 bytes
 bench/lev_v_bug.nc                                 |  Bin 0 -> 43264 bytes
 bench/maize_1.nc                                   |  Bin 0 -> 968 bytes
 bench/maize_2.nc                                   |  Bin 0 -> 968 bytes
 bench/maize_3.nc                                   |  Bin 0 -> 968 bytes
 bench/test_results/axticlabel.pdf                  |  Bin 7177 -> 7166 bytes
 bench/test_results/bnplot.pdf                      |  Bin 183832 -> 183735 bytes
 bench/test_results/closed_lev.pdf                  |  Bin 38462 -> 38600 bytes
 bench/test_results/dashbug.pdf                     |  Bin 10413 -> 10364 bytes
 bench/test_results/degC_axlab.pdf                  |  Bin 6948 -> 6880 bytes
 bench/test_results/dots.pdf                        |  Bin 5193 -> 5269 bytes
 bench/test_results/ferret_run_tests_err            |  201 +-
 bench/test_results/ferret_run_tests_log            | 3434 +++++++++---
 bench/test_results/ferret_run_tests_ncdump         |  395 +-
 bench/test_results/flowlines.pdf                   |  Bin 55408 -> 55588 bytes
 bench/test_results/graticules.pdf                  |  Bin 24461 -> 25097 bytes
 bench/test_results/linecolors.pdf                  |  Bin 16544 -> 16442 bytes
 bench/test_results/multi_line_labels.pdf           |  Bin 30878 -> 30894 bytes
 bench/test_results/polygon_plot.pdf                |  Bin 16333 -> 16172 bytes
 bench/test_results/pyferret_run_tests_err          |  181 +-
 bench/test_results/pyferret_run_tests_log          | 3596 +++++++++---
 bench/test_results/pyferret_run_tests_ncdump       |  395 +-
 bench/test_results/startup_tests2.pdf              |  Bin 11505 -> 11570 bytes
 bench/test_results/timetics.pdf                    |  Bin 15654 -> 15977 bytes
 bench/test_results/timetics2.pdf                   |  Bin 27328 -> 27383 bytes
 bench/test_results/vec_curv.pdf                    |  Bin 14409 -> 14410 bytes
 bench/test_results/vec_curv2.pdf                   |  Bin 28782 -> 29018 bytes
 bench/test_results/viewaxes.pdf                    |  Bin 8042 -> 8091 bytes
 bench/test_save_dsg_in.nc                          |  Bin 0 -> 1680 bytes
 bin/Finstall                                       |  116 +-
 bin/ferret_paths_template.csh                      |   58 +-
 bin/ferret_paths_template.sh                       |   57 +-
 bin/make_executable_tar                            |    2 +-
 bin/{pyferret_template.sh => pyferret_template}    |   29 +-
 bin/pyferret_template.csh                          |   55 -
 external_functions/Makefile                        |    4 +-
 external_functions/cmprsi_by/Makefile              |    3 +-
 external_functions/cmprsi_by/expndi_by_m_counts.F  |  292 +
 external_functions/decimate/Makefile               |    6 +-
 .../decimate/{separate.F => piecewise1.F}          |  255 +-
 external_functions/decimate/piecewise2.F           |  403 ++
 external_functions/decimate/piecewise3.F           |  604 +-
 external_functions/decimate/piecewise_subs.F       |  510 ++
 external_functions/decimate/sample_fast_i.F        |    2 +-
 .../{sample_fast_i.F => sample_fast_i_str.F}       |   32 +-
 external_functions/decimate/separate.F             |   24 +-
 .../decimate/{separate.F => separate_str.F}        |   40 +-
 .../ef_utility/ferret_cmn/EF_mem_subsc.cmn         |    2 -
 .../ef_utility/ferret_cmn/EF_mem_subsc_f90.inc     |    2 -
 external_functions/eof/Makefile                    |    9 +-
 external_functions/eof/eof_space_tgap.F            |  629 +++
 external_functions/eof/eof_stat_tgap.F             |  646 +++
 external_functions/eof/eof_tfunc_tgap.F            |  617 +++
 external_functions/eof/eofsubs.F                   | 1012 ++++
 external_functions/sort/Makefile                   |    2 +-
 external_functions/stringfcns/efstrings.F          |   12 +-
 external_functions/stringfcns/length_of_strings.F  |   10 +-
 external_functions/stringfcns/maxstrlen.F          |   10 +-
 external_functions/stringfcns/pass_thru_string.F   |   13 +-
 external_functions/stringfcns/pick_a_string.F      |   13 +-
 external_functions/stringfcns/str_missing.F        |   13 +-
 external_functions/stringfcns/string_cat3.F        |   16 +-
 external_functions/stringfcns/string_len_sum.F     |   11 +-
 external_functions/stringfcns/strings_as_args.F    |   18 +-
 fer/ccr/EF_InternalUtil.c                          |   64 +-
 fer/cferbind/cairoCFerBind_createSurface.c         |    6 -
 fer/cferbind/cairoCFerBind_drawPolygon.c           |    6 +-
 fer/cferbind/cairoCFerBind_drawRectangle.c         |    6 +-
 fer/cferbind/cairoCFerBind_saveWindow.c            |   19 +-
 fer/common/EF_mem_subsc.cmn                        |    1 +
 fer/common/ferret.parm                             |    9 +-
 fer/common/interp_stack.parm                       |    9 +-
 fer/common/plot_setup.parm                         |   12 +-
 fer/common/slash.parm                              |    5 +-
 fer/ctx/get_var_context.F                          |    5 +-
 fer/ctx/region_class.F                             |    3 +
 fer/dat/xalgebra_data.F                            |   18 +-
 fer/dat/xrevision_data.F                           |   14 +-
 fer/doo/SOURCE_FILES                               |    4 +
 fer/doo/{do_xyave_regrid.F => do_4d_ave_wgt.F}     |   49 +-
 fer/doo/do_4d_wgt.F                                |  303 +
 fer/doo/{do_xyave_regrid.F => do_avg_wgt.F}        |   40 +-
 fer/doo/do_internal_gc_fcn.F                       |   18 +-
 fer/doo/do_wgt.F                                   |  244 +
 fer/doo/do_xyave_regrid.F                          |    8 +-
 fer/doo/xyave_regrid.F                             |   17 +-
 fer/ef_utility/ef_get_string_arg_elem_len_sub.F    |    6 +-
 fer/ef_utility/ef_get_string_arg_element_6d.F      |    4 +-
 fer/ef_utility/ef_get_string_arg_element_len_6d.F  |    4 +-
 fer/ef_utility/ef_get_string_arg_element_sub.F     |    4 +-
 fer/ef_utility/ef_get_string_arg_max_len.F         |    4 +-
 fer/efi/SOURCE_FILES                               |    2 +
 fer/efi/date1900.F                                 |  105 +-
 fer/efi/expndi_by_m_counts.F                       |  318 ++
 fer/efi/labwid.F                                   |    7 +-
 fer/efi/list_value_xml.F                           |    4 +-
 fer/efi/samplexy_curv.F                            |   16 +-
 fer/efi/samplexy_curv_avg.F                        |   13 +-
 fer/efi/samplexy_curv_nrst.F                       |   12 +
 .../decimate => fer/efi}/separate.F                |   34 +-
 fer/gnl/SOURCE_FILES                               |    1 +
 fer/gnl/cdf_list.F                                 |    2 +-
 fer/gnl/get_context_mods.F                         |    6 +
 .../isit_const_arr_var.F}                          |   61 +-
 fer/gnl/list_cmnd_data.F                           |    2 +
 fer/gnl/list_multi_sub.F                           |    5 +-
 fer/gnl/repl_exprns.F                              |   19 +-
 fer/gnl/sample.F                                   |   26 +-
 fer/gnl/set_var.F                                  |    5 +-
 fer/gnl/show_1_function.F                          |    2 +
 fer/gnl/show_1_pyvar.F                             |    4 +-
 fer/gnl/show_data.F                                |    3 +-
 fer/gnl/show_grid.F                                |    5 +-
 fer/ino/init_ez_dset.F                             |   37 +-
 fer/ino/var_ss_lims.F                              |    8 +-
 fer/mem/SOURCE_FILES                               |    1 +
 fer/mem/assign_mr_cx.F                             |    3 +
 fer/mem/create_mem_var.F                           |   29 +-
 fer/mem/create_temp_mem_var.F                      |   19 +-
 fer/mem/find_mem_var.F                             |    5 +-
 fer/mem/get_memory.F                               |   60 +-
 fer/mem/get_work_mr.F                              |    7 +-
 fer/mem/get_work_spc.F                             |    8 +-
 fer/mem/{get_work_spc.F => r_cgrid_size_delta.F}   |   56 +-
 fer/ocn/calc_cvar.F                                |   22 +-
 fer/plt/disp_data_set_up.F                         |   11 +-
 fer/plt/disp_set_up.F                              |    4 +
 fer/plt/plot_set_up.F                              |   76 +-
 fer/plt/polygon_set_up.F                           |   28 +
 fer/stk/get_dependencies.F                         |    5 +
 fer/stk/interp_stack.F                             |    6 +-
 fer/stk/is_aggregate_gather.F                      |   27 +-
 fer/stk/is_counter_var.F                           |    5 +-
 fer/stk/is_dependencies.F                          |   12 +
 fer/stk/is_do_gc_fcn.F                             |   11 +-
 fer/stk/is_trans.F                                 |   15 +-
 fer/stk/offset_ss.F                                |   11 +-
 fer/utl/get_dependency_status.F                    |    6 +-
 fer/utl/get_string_element.F                       |    3 +-
 fer/utl/parse_number_list.F                        |   21 +-
 fer/utl/report_aux_dependency.F                    |    3 +-
 fer/xeq/xeq_cancel.F                               |    2 +-
 fer/xeq/xeq_contour.F                              |   44 +-
 fer/xeq/xeq_plot.F                                 |   42 +-
 fer/xeq/xeq_polygon.F                              |   39 +-
 fer/xeq/xeq_shade.F                                |   40 +-
 fer/xeq/xeq_show.F                                 |   36 +-
 ferretmagic.py                                     |  121 +-
 fmt/cmn/tmap_errors.parm                           |   11 +-
 fmt/src/SOURCE_FILES                               |    2 +
 fmt/src/cd_conventions_out.F                       |   60 +-
 fmt/src/cd_dim_only.F                              |   40 +
 fmt/src/cd_get_1_axis.F                            |   60 +-
 fmt/src/cd_get_line_direction.F                    |   16 +
 fmt/src/cd_make_var.F                              |   28 +-
 fmt/src/cd_stamp_out.F                             |   47 +-
 fmt/src/cd_write_axis.F                            |   94 +-
 fmt/src/cd_write_grid.F                            |    6 +-
 fmt/src/cd_write_var.F                             |   25 +-
 fmt/src/ez_count_dset.F                            |  242 +
 fmt/src/tm_fmt.F                                   |    1 +
 fmt/src/tm_secs_to_date.F                          |    6 +-
 fmt/src/xerror_text_data.F                         |    2 +
 jnls/contrib/regressxy.jnl                         |   46 -
 jnls/go/polymark.jnl                               |    9 +-
 palettes/QC_V3_by_level.spk                        |   16 +
 palettes/QC_regions.spk                            |   14 +
 palettes/brown_soft.spk                            |    2 +
 palettes/coralreefwatch_dhw.spk                    |   18 +
 palettes/coralreefwatch_dhw_pct_white.spk          |   21 +
 palettes/coralreefwatch_dhw_percent.spk            |   21 +
 palettes/coralreefwatch_hotspot.spk                |  127 +
 palettes/coralreefwatch_sst.spk                    |  127 +
 palettes/coralreefwatch_sstanomaly.spk             |  128 +
 palettes/fifteen_by_levels.spk                     |   18 +
 palettes/green_pine.spk                            |    2 +
 palettes/pale_green_blue.spk                       |    9 +
 palettes/ten2_levels.spk                           |   13 +
 palettes/ten_bright_levels.spk                     |   15 +
 palettes/woce.spk                                  |    7 +
 platform_specific.mk.i386-linux                    |    2 +-
 platform_specific.mk.i386-linux-gnu                |    5 +-
 platform_specific.mk.intel-mac                     |    7 +-
 platform_specific.mk.x86_64-linux                  |    4 +-
 platform_specific.mk.x86_64-linux-gnu              |    7 +-
 ppl/complot/symbel.F                               |   10 +
 ppl/include/PLT.INC                                |    5 +-
 ppl/plot/daxis.F                                   |    7 +-
 ppl/plot/daxis2.F                                  |    5 +-
 ppl/plot/labdrw.F                                  |   13 +-
 ppl/plot/lev.F                                     |   16 +-
 ppl/plot/opnppl.F                                  |   10 +-
 ppl/plot/plotxy_ribbon.F                           |   75 +-
 ppl/plot/pplcmd_f.F                                |   18 +-
 ppl/plot/ppldata.F                                 |    4 +-
 ppl/plot/prmtiv.F                                  |   21 +-
 ppl/plot/vecfld.F                                  |   16 +-
 ppl/tmap_inc/plt_inc.decl                          |    3 +-
 ppl/tmap_inc/shade_vars.cmn                        |    8 +-
 ppl/tmapadds/SOURCE_FILES                          |    1 +
 ppl/tmapadds/compute_histo_bins.F                  |   27 +-
 ppl/tmapadds/compute_mnstd.F                       |  100 +-
 ppl/tmapadds/getlabfonts.F                         |  122 +-
 ppl/tmapadds/key.F                                 |   37 +-
 ppl/tmapadds/set_fill_ndx.F                        |   33 +
 ppl/tmapadds/set_levels_shade_fill.F               |   20 +-
 .../tmapadds/set_ribbon_ndx.F                      |   42 +-
 ppl/tmapadds/shade_key.F                           |   15 +-
 ppl/tmapadds/ws_line_spectrum.F                    |   26 +-
 pviewmod/pipedviewerpq.py                          |   16 +-
 pyfermod/__init__.py                               |   34 +-
 site_specific.mk                                   |   62 +-
 271 files changed, 27823 insertions(+), 7775 deletions(-)

diff --git a/Makefile b/Makefile
index 5ad5886..1c1772d 100644
--- a/Makefile
+++ b/Makefile
@@ -18,8 +18,10 @@ optimized :
 	$(MAKE) -C $(DIR_PREFIX)/fer optimized
 	$(MAKE) -C $(DIR_PREFIX)/threddsBrowser
 	$(MAKE) "CFLAGS = $(CFLAGS) -O" pymod_optimized
-	$(MAKE) "FFLAGS = $(FFLAGS) -O" -C $(DIR_PREFIX)/efmem
-	$(MAKE) "INSTALL_FER_DIR = $(DIR_PREFIX)/pyferret_install" -C $(DIR_PREFIX)/external_functions optimized
+	if [ "$(BUILDTYPE)" != "intel-mac" ] ; then \
+            $(MAKE) "FFLAGS = $(FFLAGS) -O" -C $(DIR_PREFIX)/efmem ; \
+            $(MAKE) "INSTALL_FER_DIR = $(DIR_PREFIX)/pyferret_install" -C $(DIR_PREFIX)/external_functions optimized ; \
+        fi
 	$(MAKE) -C $(DIR_PREFIX)/bin/build_fonts/unix
 
 .PHONY : debug
@@ -28,8 +30,10 @@ debug :
 	$(MAKE) -C $(DIR_PREFIX)/fer debug
 	$(MAKE) -C $(DIR_PREFIX)/threddsBrowser
 	$(MAKE) "CFLAGS = $(CFLAGS) -O0 -g" pymod_debug
-	$(MAKE) "FFLAGS = $(FFLAGS) -O0 -g" -C $(DIR_PREFIX)/efmem
-	$(MAKE) "INSTALL_FER_DIR = $(DIR_PREFIX)/pyferret_install" -C $(DIR_PREFIX)/external_functions debug
+	if [ "$(BUILDTYPE)" != "intel-mac" ] ; then \
+            $(MAKE) "FFLAGS = $(FFLAGS) -O0 -g" -C $(DIR_PREFIX)/efmem ; \
+            $(MAKE) "INSTALL_FER_DIR = $(DIR_PREFIX)/pyferret_install" -C $(DIR_PREFIX)/external_functions debug ; \
+        fi
 	$(MAKE) -C $(DIR_PREFIX)/bin/build_fonts/unix
 
 ## The following builds libpyferret.so, then installs that shared-object
diff --git a/bench/TEST_SCRIPTS b/bench/TEST_SCRIPTS
index 6b072de..97891b5 100644
--- a/bench/TEST_SCRIPTS
+++ b/bench/TEST_SCRIPTS
@@ -211,5 +211,15 @@ bn_bad_axis_bounds.jnl
 bn_enter_exit_GO.jnl
 bn_stddev.jnl
 bn_set_axis_name.jnl
+bn691_bug_fixes.jnl
+bn_append_dsg.jnl
+bn_global_atts.jnl
+bn_conventions_history.jnl
+bn_center_key_labels.jnl
+bn_wgt_transform.jnl
+bn_show_outfile.jnl
+bn_date1900_array.jnl
+bn_spawn_size.jnl
+bn_polygon_log.jnl
 bn_all_ef.jnl
 bn_startupfile.jnl
diff --git a/bench/TRASH_FILES b/bench/TRASH_FILES
index d345265..4ee8823 100644
--- a/bench/TRASH_FILES
+++ b/bench/TRASH_FILES
@@ -12,8 +12,8 @@ aa.nc
 abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy.gif
 a.jnl
 a.nc
-a1.nc
-a2.nc
+a.txt
+anew_global.nc
 another_file_vars.nc
 anothername.gif
 append_to_this.nc
@@ -30,9 +30,9 @@ bat.plt_7
 bat.plt_8
 bat.plt_9
 benchmark_history.log
+bench.mgm 
 b.jnl
 b.nc
-bench.mgm 
 bnplot-1.gif
 bnplot-1.plt
 bnplot-2.gif
@@ -42,17 +42,17 @@ bnplot-4.plt
 bnplot.gif
 bnplot.plt
 bnplot.ps
-c.nc
-c1.nc
 c1.nc
 c2.nc
 cc.nc
 clim.nc
 closed_lev.plt
+c.nc
 confuse_xz.nc
 confuse_yt.nc
 confuse_yz.nc
 confuse_yzt.nc
+conventions_history.nc
 d2.nc
 dashbug.gif
 dashbug.plt
@@ -101,6 +101,7 @@ FTLON.cdf
 gh.nc
 .gif
 gif_dashbug.gif
+global_copy.nc
 g.nc
 graticules.plt
 h.nc
@@ -137,6 +138,7 @@ noleap.nc
 other_file_vars.nc
 out.cdf
 out.nc
+out.xml
 pattern_plot1.plt
 pattern_plot2.plt
 permutedBinaryTest.dat
@@ -184,6 +186,7 @@ test_fil.cdf
 test_mod.cdf
 test_modulo.cdf
 test_nomod.cdf
+test_save_dsg.nc
 test_string.cdf
 test_subspan_modulo.nc
 test.txt
@@ -191,14 +194,15 @@ test.unf
 the_xml_file.xml
 timetics2.plt
 timetics.plt
+tval.nc
 unf.dat
 v12file.nc
 v1file.nc
 vec_curv2.plt
 vec_curv.plt
 WV.J34K56L7
-xml_out.xml
 xml_out_string.xml
+xml_out.xml
 xyir.nc
 xz.nc
 z1.nc
diff --git a/bench/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc b/bench/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
new file mode 100644
index 0000000..316e23b
Binary files /dev/null and b/bench/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc differ
diff --git a/bench/anew_global.cdl b/bench/anew_global.cdl
new file mode 100644
index 0000000..06629ba
--- /dev/null
+++ b/bench/anew_global.cdl
@@ -0,0 +1,40 @@
+netcdf anew {
+dimensions:
+	xax5 = 5 ;
+	yax5 = 5 ;
+variables:
+	double xax5(xax5) ;
+		xax5:units = "degrees_east" ;
+		xax5:modulo = " " ;
+		xax5:point_spacing = "even" ;
+		xax5:axis = "X" ;
+		xax5:standard_name = "longitude" ;
+	double yax5(yax5) ;
+		yax5:units = "degrees_north" ;
+		yax5:point_spacing = "even" ;
+		yax5:axis = "Y" ;
+		yax5:standard_name = "latitude" ;
+	float ROSE(yax5, xax5) ;
+		ROSE:missing_value = -1.e+34f ;
+		ROSE:_FillValue = -1.e+34f ;
+		ROSE:long_name = "Elev" ;
+		ROSE:units = "METERS" ;
+
+// global attributes:
+		:history = "Subset of etopo20,\n",
+			" FERRET V6.71    9-May-14" ;
+		:Conventions = "Existing conventions note, CF-1.0" ;
+data:
+
+ xax5 = 20.1666667, 20.5, 20.8333333, 21.1666666, 21.4999999 ;
+
+ yax5 = -89.8333333, -89.5, -89.1666667, -88.8333334, -88.5000001 ;
+
+ ROSE =
+  2804, 2804, 2804, 2804, 2804,
+  2831, 2831, 2831, 2831, 2831,
+  2808, 2808, 2808, 2808, 2808,
+  2804, 2804, 2804, 2804, 2804,
+  2831, 2831, 2831, 2831, 2831 ;
+
+}
diff --git a/bench/ansley_official.linux_err b/bench/ansley_official.linux_err
index 8797fa2..b282a2f 100644
--- a/bench/ansley_official.linux_err
+++ b/bench/ansley_official.linux_err
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
 Running FERRET version /home/users/ansley/build/linux/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 52529714 Mar 17 15:44 /home/users/ansley/build/linux/FERRET/fer/ferret_c
+-rwxr-xr-x 1 ansley tmap 53500930 Oct 29 15:34 /home/users/ansley/build/linux/FERRET/fer/ferret_c
 Using external functions from /home/users/ansley/build/linux/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: after Steve's checkin, aux variables
+Note:  ticket 2115 and a new test script for 2201
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -20,11 +20,10 @@ FER_LIBS=/home/users/tmap/ferret/linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/linux/ppl
 PWD=/home/users/ansley/build/linux/FERRET/bench
-Beginning at Mon Mar 17 15:53:19 PDT 2014
+Beginning at Wed Oct 29 15:55:55 PDT 2014
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
         SET EXPRESSION has not been given or implied
-        SET EXPRESSION has not been given or implied
  **ERROR: unknown command qualifier: help
 MESSAGE/CONTINUE /help
  **ERROR: unknown command: that
@@ -304,7 +303,7 @@ list temp[i=2:5,gx=130e:80w:10]
 list temp[gx=130e:80w]
  **ERROR: variable unknown or not in data set: NOEXIST
 list temp[gx=u]	+ noexist
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list temp[gx=u,k=30]
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -320,7 +319,7 @@ list tu
 list tu
  **ERROR: variable unknown or not in data set: NOEXIST
 list tu
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list tu
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -580,9 +579,10 @@ Replacing definition of axis XAX
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
- **ERROR: request exceeds memory setting: A negative number of words were requested.
+ **ERROR: request exceeds memory setting: 24000 Mwords were requested.
 load num
- *** NOTE: The current grid is most likely too large
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
@@ -845,6 +845,7 @@ Replacing definition of axis X10
  *** NOTE: Not deleted: X10
  *** NOTE: Axis is in use by grid G10X5
  PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
 
 Bailing out of external function "eof_space":
 	 Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE
@@ -854,7 +855,6 @@ Bailing out of external function "eof_stat":
 
 Bailing out of external function "eof_tfunc":
 	 Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC
- TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -1083,7 +1083,7 @@ Replacing definition of axis TAX2
  *** NOTE: regarding ./test_axes.nc ...
  *** NOTE: Climatological axes test_irreg, test_seas defined
  *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: XEVEN
  *** NOTE: Axis is in use by grid EVEN
  *** NOTE: Not deleted: XODD
@@ -1188,18 +1188,18 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
  *** NOTE: Axis is in use by grid GG1
+ *** NOTE: Not deleted: TEST_IRREG
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: YAXLEVITR1_90
  *** NOTE: Axis is in use by grid GG2
- *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
  *** NOTE: Not deleted: ZAXLEVITR1_1
  *** NOTE: Axis is in use by grid GG2
  *** NOTE: Not deleted: (AX020)
@@ -1308,10 +1308,10 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
@@ -1679,15 +1679,15 @@ Replacing definition of grid TGRID
 def axis/t/cal=nogood/t=1-jan-2000:1-jan-2010:1/units=months tax
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: ZORRO
+ *** NOTE: Units  not recognized: zorro
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized for T axis: METERS
+ *** NOTE: Units  not recognized for T axis: meters
  *** NOTE: They will not be convertible
- *** NOTE: Units  not recognized for Y axis: SECONDS
+ *** NOTE: Units  not recognized for Y axis: seconds
  *** NOTE: They will not be convertible
 Replacing definition of axis TAX
 Replacing definition of axis XAX
@@ -2131,7 +2131,7 @@ curl error details:
              this_is_not_a_file.nc
 SET DAT/FORM=CDF this_is_not_a_file.nc
  **Internet Data error
-             NetCDF: Malformed or inaccessible DAP DDS (OPeNDAP/netCDF Error code -72)
+             NetCDF: file not found (OPeNDAP/netCDF Error code -90)
              Data set: http://ferret.pmel.noaa.gov/thredds/dodsC/data/PMEL/COADS/coads_nothing.cdf
 SET DAT/FORM=CDF "http://ferret.pmel.noaa.gov/thredds/dodsC/data/PMEL/COADS/coads_nothing.cdf"
  **Internet Data error
@@ -2868,6 +2868,7 @@ load/x=160e/y=5s temp[d=2,k=1,g=no_exist12345678901234567890]
  *** NOTE: LON1_15: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values
  *** NOTE: LAT1800_1800: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values
  *** NOTE: ENS: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values
+ *** NOTE: TIME13: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values
  *** NOTE: Units on axis "ENS" are not recognized: count
  *** NOTE: They will not be convertible:
  PERMANENT data cleared from memory
@@ -3423,11 +3424,6 @@ Replacing definition of axis TDAY
  LISTing to file aa.nc
  LISTing to file aa.nc
  LISTing to file aa.nc
-ncks: WARNING Overwriting global attribute history
-ncks: WARNING Overwriting global attribute Conventions
-ncks: WARNING Overwriting attribute point_spacing for output variable ZAXIS_ORIG
-ncks: WARNING Overwriting attribute axis for output variable ZAXIS_ORIG
-ncks: WARNING Overwriting attribute standard_name for output variable ZAXIS_ORIG
  LISTing to file aa.nc
  LISTing to file aa.nc
 NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60)
@@ -3518,11 +3514,17 @@ Replacing definition of axis ZAX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
  **ERROR: illegal limits: X axis limits don't match variable def'n: A
           Are you giving explicit limits when SET REGION would suffice ?
 list f
- *** NOTE: Not deleted: ENSEMBLE
- *** NOTE: Axis is in use by grid (G103)
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3576,6 +3578,46 @@ SET DAT/FORM=CDF snoopy.dat
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ LISTing to file a.nc
+Replacing definition of axis XAXIS_TEST
+ LISTing to file b.nc
+ LISTing to file c.nc
+ LISTing to file c.nc
+ LISTing to file c.nc
+ LISTing to file c.nc
+ LISTing to file c.nc
+ LISTing to file nc
+ **TMAP ERR: error in line definition
+             file coords dont match variable coords on axis XAXIS_TEST
+LIST/FORMAT=CDF/clobber/keep/file=nc b,a[d=1]
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: dimensions improperly specified: must be a 2D region
+          shade b
+shade b
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Changing the value of attribute v1.long_name
+ *** NOTE: Changing the value of attribute v1.units
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: attribute undefined or invalid attribute name: temp.noexist[d=levitus_climatology]
+          attribute noexist not found for variable TEMP
+show att temp.noexist[d=levitus_climatology]
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable temp exists in dataset
+set var/name=temp salt
+ **ERROR: invalid command: illegal new name.  Variable psi exists in dataset
+set var/name=psi myvar
+ **ERROR: invalid command: illegal new name.  Variable diff already defined
+set var/name=diff w
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
  *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another
  *** NOTE: Error in bounds "MONTH_IRREG_bnds" or bounds do not enclose point on axis MONTH_IRREG
  *** NOTE: Substituting coordinate midpoints
@@ -3586,6 +3628,167 @@ Replacing definition of axis TAX
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file b.nc
+ LISTing to file c.nc
+ **ERROR: invalid command: illegal new name. Axis days2000 is already defined
+set axis/name=days2000 x_in_meters
+ **ERROR: invalid command: illegal new name given for axis
+set axis/name x_in_meters
+ **ERROR: invalid command: illegal new name given for axis 45
+set axis/name=45 x_in_meters
+ **ERROR: invalid command: illegal new name given for axis .fr
+set axis/name=.fr x_in_meters
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING
+list tax_datestring (tt[L=3], tt, 5)
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR
+ *** NOTE: Substituting coordinate midpoints
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: command syntax: must be a constant COS(1)
+list {cos(1), sin(0)}
+ **ERROR: command syntax: must be a constant 0-180
+list {0-180, 180}
+ **ERROR: command syntax: must be a constant  1./5.
+list {0.1, 0.2, 1./5.}
+ **ERROR: command syntax: must be a constant 5*3+1
+list {5*3+1, 2+3}
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis TAX
+ LISTing to file tval.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file out.xml
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis XAXIS
+ **ERROR: request exceeds memory setting: 2369 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+Replacing definition of axis LONGTIME
+ **ERROR: request exceeds memory setting: 4735 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ LISTing to file aa.nc
+ LISTing to file bb.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file anew_global.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file conventions_history.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis X2
+Replacing definition of axis Y2
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
+ **ERROR: illegal limits: X axis limits don't match variable def'n: A
+          Are you giving explicit limits when SET REGION would suffice ?
+list f
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.850
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.689E-02
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
  **ERROR: command syntax: unknown region name: @w
 set region/@w
  PERMANENT data cleared from memory
@@ -3673,4 +3876,4 @@ vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j
 Re-defining viewport LM6
 Re-defining viewport UM6
  *** NOTE: Cannot create new windows when batch mode set
-Ended at Mon Mar 17 15:55:07 PDT 2014
+Ended at Wed Oct 29 15:57:41 PDT 2014
diff --git a/bench/ansley_official.linux_log b/bench/ansley_official.linux_log
index 811d01b..eb01ab8 100644
--- a/bench/ansley_official.linux_log
+++ b/bench/ansley_official.linux_log
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
 Running FERRET version /home/users/ansley/build/linux/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 52529714 Mar 17 15:44 /home/users/ansley/build/linux/FERRET/fer/ferret_c
+-rwxr-xr-x 1 ansley tmap 53500930 Oct 29 15:34 /home/users/ansley/build/linux/FERRET/fer/ferret_c
 Using external functions from /home/users/ansley/build/linux/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: after Steve's checkin, aux variables
+Note:  ticket 2115 and a new test script for 2201
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -20,7 +20,7 @@ FER_LIBS=/home/users/tmap/ferret/linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/linux/ppl
 PWD=/home/users/ansley/build/linux/FERRET/bench
-Beginning at Mon Mar 17 15:53:19 PDT 2014
+Beginning at Wed Oct 29 15:55:55 PDT 2014
 ! BN500_ALL.JNL
 ! - run all the benchmark tests
 ! - ordered (more or less) from least to most complex
@@ -273,9 +273,9 @@ SHOW DATA/FULL
     1> ./snoopy.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:2       ...       ...       ...       ...       ...
+               on grid (G008) with -1.E+34 for missing data
+             X=-0.5:1.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -285,7 +285,7 @@ SHOW DATA
      currently SET data sets:
     1> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:2       ...       ...       ...       ...       ...
  
 SET MODE IGNORE_ERROR
 SET DATA/EZ/VAR="P,Q" 1
@@ -527,7 +527,7 @@ show mode journal
       JOURNAL          SET         newjournal.jnl
 set mode journal ferret.jnl
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -539,7 +539,7 @@ ppl list plot
 ppl listsym
 cancel mode ppllist
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -596,6 +596,8 @@ set mode metafile metafile.plt
  
 ! SET - SHOW - CANCEL EXPRESSION
 SHOW EXPRESSION
+        current output expression(s):
+        X[GX=1:0:1]
 CANCEL EXPRESSION
 SHOW EXPRESSION
 SET EXPRESSION i+5,i-j
@@ -794,19 +796,19 @@ SHOW VARIABLES
  
 ! SHOW MEMORY , LOAD
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/TEMPORARY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded without /PERMANENT:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
   105  /125W          50  /1.7N           1  /10             5  /13-SEP-1982  ...  / ...         ...  / ...
  
 SHOW MEMORY/PERMANENT
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded with /PERMANENT:
 SHOW MEMORY/ALL
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 all data in memory:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
@@ -816,9 +818,9 @@ all data in memory:
 LET A=i
 LOAD/PERM/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -832,9 +834,9 @@ SHOW MEMORY/FREE
             number of blocks used /PERM: 1
 LOAD/TEMPORARY/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -1404,8 +1406,8 @@ let x1 = 0.012954
 let x2 = 7.5E-09
 let x3 = .1
 say >>`x1`<< ---  >>`x2`<< --- >>`x3`<<
- !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
->>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
+ !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
+>>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
  
 ! must recognize "/" inside immediate mode exprn
 list/I=`6/2` i
@@ -1746,8 +1748,8 @@ show data
  
     2> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- T4       test4                            1:20480   ...       ...       ...       ...       ...
- T3       test3                            1:20480   ...       ...       ...       ...       ...
+ T4       test4                            1:2       ...       ...       ...       ...       ...
+ T3       test3                            1:2       ...       ...       ...       ...       ...
  
 show data/full 1
      currently SET data sets:
@@ -9617,9 +9619,9 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ V1       V1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9647,12 +9649,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
+ X2       X2                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9683,12 +9685,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9727,12 +9729,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9765,12 +9767,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9800,12 +9802,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0))
  /SKIP = 2
@@ -9838,12 +9840,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0)/)
  /SKIP = 1
@@ -10087,7 +10089,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -10187,7 +10189,7 @@ plot/i=1:10/ylimits=1:40/nolabel i      ! note that /nolabel supresses XLAB
 plot/i=1:10/over/sym=2 i^1.1
 plot/i=1:10/over/sym=2/size=.12 i^1.2
 plot/i=1:10/over/sym=2/color=red i^1.3
-plot/i=1:10/over/thick/step i^1.4
+plot/i=1:10/over/thick/step/color=light_blue i^1.4
 plot/i=1:10/over/thick/color=blue/step=connected i^1.5
 plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6
  
@@ -10446,18 +10448,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5PAE 32-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5PAE 32-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:50:21 $"
+NETCDF_VERSION = "4.3.3-rc2 of Oct  6 2014 16:16:52 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
-DELTA_CPU = "4.84426"
-CLOCK_SECS = "7.36"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:53:27"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
+DELTA_CPU = "5.03323"
+CLOCK_SECS = "7.649"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:56:03"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -10475,18 +10477,18 @@ show symbol/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5PAE 32-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5PAE 32-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:50:21 $"
+NETCDF_VERSION = "4.3.3-rc2 of Oct  6 2014 16:16:52 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
 DELTA_CPU = "0.001"
-CLOCK_SECS = "7.361"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:53:27"
+CLOCK_SECS = "7.65"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:56:03"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 S1 = "hello"
@@ -10496,9 +10498,9 @@ NUM = "3"
 T$DOLLAR = "hi"
 T_HELLO = "hi"
 show symbol s*
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
 S1 = "hello"
 S2 = ""hello""
 S3 = "hello and goodbye"
@@ -10508,15 +10510,15 @@ S2 = ""hello""
 ! exercise CANCEL SYMBOL
 cancel symbol s2
 show symbol s*
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
 S1 = "hello"
 S3 = "hello and goodbye"
 show symbol S*
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
 S1 = "hello"
 S3 = "hello and goodbye"
 cancel symbol s2	! already deleted
@@ -10550,9 +10552,9 @@ Q23456789012345678901234567XXXAAAAA = "6"
 ! show the upper left coordinate limits labels as symbols
 plot/i=1:100/y=10/z=5/set_up SIN(I/6)+Y+Z
 show symbol lab*
-LAB1 = "FERRET Ver. 6.861"
+LAB1 = "FERRET Ver. 6.93"
 LAB2 = "NOAA/PMEL TMAP"
-LAB3 = "17-MAR-2014 15:53:27"
+LAB3 = "29-OCT-2014 15:56:03"
 LABX = "X"
 LAB4 = "Y : 10"
 LABNUM_Y = "4"
@@ -10647,18 +10649,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5PAE 32-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5PAE 32-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:50:21 $"
+NETCDF_VERSION = "4.3.3-rc2 of Oct  6 2014 16:16:52 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-SESSION_PID = "3592"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+SESSION_PID = "1266"
 DELTA_CPU = "0.010998"
-CLOCK_SECS = "7.372"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:53:27"
+CLOCK_SECS = "7.661"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:56:03"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -12353,7 +12355,7 @@ set region/l=1/k=1/i=101:105/j=46:50
 load temp[gx=u]
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12404,7 +12406,7 @@ Dynamic axes:
 list temp[gx=u,k=20]		! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12448,7 +12450,7 @@ list temp[gx=a]			! uvar for grid name
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12495,7 +12497,7 @@ let  tu = temp[gx=u,k=20]
 list tu				! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12526,7 +12528,7 @@ set mem/siz = 10
 list temp[gz=z999999,z=5:15]	! err during regrid
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12542,7 +12544,7 @@ set mem/siz=`save_mem`
 shade 1/0 * temp[gx=u]		! err during plot
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12574,7 +12576,7 @@ list temp[gx=psxu]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12616,7 +12618,7 @@ list temp[gx=u]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12656,7 +12658,7 @@ list  temp[gx=psxu] + 5
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12682,7 +12684,7 @@ list  5 + temp[gx=psxu]
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12709,7 +12711,7 @@ list tu
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12720,7 +12722,7 @@ Dynamic grids:
 Dynamic axes:
     no implicit axes
 show grid tu
-    GRID (G003)
+    GRID (G004)
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12745,7 +12747,7 @@ list tu
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12824,7 +12826,7 @@ list temp[gx=taux]		! X only
  0.17S / 45:  27.8727  27.7878  27.7232  27.6494  27.5563  27.4494
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12935,7 +12937,7 @@ Dynamic axes:
 ! * * * dynamic generation of pseudo-variables * * *
 list x[x=.1:1:.1]			! dynamic abstract
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              SUBSET   : 10 points (X)
  0.1  /  1:  0.10000
  0.2  /  2:  0.20000
@@ -12949,7 +12951,7 @@ list x[x=.1:1:.1]			! dynamic abstract
  1    / 10:  1.00000
 list x[gx=psxu,x=130:150:2.5]		! dynamic based on named axis
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 9 points (LONGITUDE)
  130E   / 1:  130.000
  132.5E / 2:  132.500
@@ -13036,24 +13038,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX004)   Y                    3 r   95                   109
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   Y                    3 r   95                   109
  normal    Z
  normal    T
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX003)   Y                   10 r   101                  110
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX005)   Y                   10 r   101                  110
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   2
     AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   2
+    AXIS (AX005)                         use count:   1
  
 ! ambiguous coordinate tests
 list/order=x  x[x=0.1:10:1.5] +  x[x=1.1:11:1.5]
@@ -13071,16 +13073,16 @@ list/order=x a
            1.2000   4.2000   7.2000  10.2000  13.2000  16.2000  19.2000
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
- (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   X                    7 r   0.1                  9.1
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
+    AXIS (AX003)                         use count:   1
  
 ! box size on dynamic axes
 cancel region
@@ -13104,10 +13106,10 @@ let/quiet b = a[i=1:10:2]
 load b     ! "child" irregular axis
 show grid/x
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G003)
-    GRID (G003)
+ Last successful data access was on grid (G004)
+    GRID (G004)
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
@@ -13139,7 +13141,7 @@ list/i=1:10 x[gx=temp]			! from named variable
  139.5E / 10:  139.500
 list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX005)
+                        axis (AX001)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13153,7 +13155,7 @@ list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
  130W   / 9:  230.000
 list x[gx=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13181,16 +13183,16 @@ list/i=101:105/j=46:50/l=1/k=1 temp+x	! grid inherited from expression
  0.17N / 46:  254.456  255.346  256.243  257.163  258.142
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! this expression does NOT inherit the X axis -- the result is
 !	i) ambiguous X axis coordinates
@@ -13212,23 +13214,23 @@ show grid/dynamic
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            5 r   129.5W               113.5W
+ (AX003)   LONGITUDE            5 r   129.5W               113.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 list/j=46:50/l=1/k=1 temp[i=101:120:4]+x[g=temp,i=101:120:4]
              VARIABLE : TEMP[I=101:120:4]+X[G=TEMP,I=101:120:4]
@@ -13251,7 +13253,7 @@ SET REGION/I=101:105/J=46:50/l=1/k=1
 ! deliberate errors:  ****
 list x[i=5:1:1]		! not an error: inverted order
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 5 points (X)
  1   / 1:  1.00000
  2   / 2:  2.00000
@@ -13296,23 +13298,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
+ (AX003)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! regular dynamic axis
 ! ... by subscript
@@ -13380,22 +13382,22 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX004)   LATITUDE             4 r   0.5S                 4N
+ (AX003)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! ========
 ! 2/96: repeat the very same commands using GX=lo:hi:delta notation
@@ -13557,24 +13559,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
- (AX003)   LATITUDE             4 r   0.5S                 4N
+ (AX001)   LONGITUDE            4 r   130W                 121W
+ (AX005)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! the same tests but now on a nested definition
 ! regular dynamic axis
@@ -13742,23 +13744,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            6 r   138W                 113W
+ (AX005)   LONGITUDE            6 r   138W                 113W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
+ (AX001)   LONGITUDE            4 r   130W                 121W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
  
 ! irregular dynamic axis
 ! ... by subscript
@@ -13896,23 +13898,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            8 r   90W                  62W
+ (AX001)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX002)   LATITUDE             6 r   3.5S                 4N
+ (AX004)   LATITUDE             6 r   3.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! nested modulo (the dynamic axis is **NOT** modulo)
 ! ... by subscript
@@ -14094,23 +14096,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   LONGITUDE            9 r   101W                 53W
+ (AX004)   LONGITUDE            9 r   101W                 53W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            8 r   90W                  62W
+ (AX005)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
-    AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   1
+    AXIS (AX005)                         use count:   1
  
 ! calendar axes
 list/k=1/y=0/x=180 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]   ! 6-day ave
@@ -14142,7 +14144,7 @@ list/k=1/y=0/x=180/l=1 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]
 list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:`24*2`]			! pseudo-var
  !-> list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:48]			! pseudo-var
              VARIABLE : T
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 3 points (TIME)
  15-JAN-1982 00 / 1:  723925.
  17-JAN-1982 00 / 2:  723927.
@@ -14754,7 +14756,7 @@ show data/full
                on grid G016_NYZ with -1.E+34 for missing data
              X=130E:140E  
  JK       J1+K1                            ...       5:10      5:15      ...       ...       ...
-               on grid G007_NXT with -1.E+34 for missing data
+               on grid G008_NXT with -1.E+34 for missing data
              Y=21.11S:12.52S  Z=40:190  
  IJK      TEMP[L=@AVE]                    70:72      1:100     1:27      ...       ...       ...
        (T=15-MAR-1983 09:30:15-MAR-1983 11:30)
@@ -17826,10 +17828,10 @@ list a2[gx=xoffset at ave, gy=yoffset at ave]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17862,10 +17864,10 @@ list a2[gx=xoffset at sum, gy=yoffset at sum] ! should sum to 10+11+11+12=44
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:298 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17899,10 +17901,10 @@ list a2[gx=xoffset at var, gy=yoffset at var]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -18100,18 +18102,18 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- strip regrid on X: A5 --> (G008)           @MAX
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ strip regrid on X: A5 --> (G002)           @MAX
  eval    A5       C:  7 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : X[GX=X5_EDGES]
                         regrid: 1 delta on X at MAX
              SUBSET   : 5 points (X)
@@ -18121,7 +18123,7 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  4   / 4:  3.50000
  5   / 5:  5.50000
 let a5 = x[gx=x5_edges, i=3]
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A5       M:299 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -25628,7 +25630,7 @@ GO err491_spawn_quotes.jnl
  
 ! this should be a valid command
 SPAWN "date"
-Mon Mar 17 15:53:35 PDT 2014
+Wed Oct 29 15:56:10 PDT 2014
  
 GO bn_reset
 cancel mode verify
@@ -25755,7 +25757,7 @@ list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50})
  1N   / 46:  29.1373  28.9243  28.3264
  1S   / 45:  28.8965  28.8240  28.5357
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -26252,7 +26254,7 @@ Dynamic grids:
     GRID (G017)                          use count:   2
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26260,13 +26262,13 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX001)                         use count:   2
+    AXIS (AX002)                         use count:   2
 cancel memory/all
 let/quiet a = sst[l=1,y=1s:1n:.5]
 list SAMPLEI(a,{30,40,50})
@@ -26286,7 +26288,7 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26294,13 +26296,13 @@ Dynamic grids:
     GRID (G017)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   2
+    AXIS (AX001)                         use count:   2
  
 ! sampling a pseudo-variable
 list SAMPLEI(X[x=1:12],{3,4,7,15})
@@ -26457,9 +26459,9 @@ list SAMPLEI(Y[y=110:200:10],{3,4,7})
 cancel memory/all
 set mode diagnostic
 list SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48})
- dealloc  dynamic grid (G017)          NORMAL    (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G017)          NORMAL    (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C01,V02 C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C09,V02 C: 10 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -26562,7 +26564,7 @@ list a 			!   <-- CACHE HIT FAILS!!!
 set mode/last diagnostic
  
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -29157,15 +29159,15 @@ stat $1[gx=xtrop]
  !-> stat sst[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 52 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29184,7 +29186,7 @@ stat $1[gx=xtrop]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29197,15 +29199,15 @@ stat $1[gx=xtrop]
  -DELETE I        M: 49 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 49 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29228,21 +29230,21 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sstx = sst[gx=xtrop]
 stat $1x
  !-> stat sstx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SSTX     C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 27 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29260,7 +29262,7 @@ stat $1x
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -29272,14 +29274,14 @@ stat $1x
  -DELETE I        M: 44 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 44 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29298,24 +29300,24 @@ stat $1x
  Standard deviation: 9.8848
  
 define grid/x=xtrop gx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SSTX     M: 40 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SSTX     M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
 stat $1[g=gx]
  !-> stat sst[g=gx]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 47 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29334,7 +29336,7 @@ stat $1[g=gx]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29347,15 +29349,15 @@ stat $1[g=gx]
  -DELETE I        M: 43 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 43 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29377,19 +29379,19 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 46 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29408,7 +29410,7 @@ stat $1[gx=xtrop,gy=ytrop]
  Mean    value: 26.908 (unweighted average)
  Standard deviation: 1.778
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29421,16 +29423,16 @@ stat $1[gx=xtrop,gy=ytrop]
  -DELETE I        M: 40 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 40 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29451,7 +29453,7 @@ stat $1[gx=xtrop,gy=ytrop]
  
 define grid/like=$1/x=xtrop/y=ytrop gxyt
  !-> define grid/like=sst/x=xtrop/y=ytrop gxyt
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
@@ -29989,18 +29991,18 @@ stat $1[gx=xtrop]
  !-> stat sst5[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 50 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30019,7 +30021,7 @@ stat $1[gx=xtrop]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -30032,18 +30034,18 @@ stat $1[gx=xtrop]
  -DELETE I        M: 42 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 42 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30066,24 +30068,24 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sst5x = sst5[gx=xtrop]
 stat $1x
  !-> stat sst5x
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SST5X    C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 45 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30101,7 +30103,7 @@ stat $1x
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30113,17 +30115,17 @@ stat $1x
  -DELETE I        M: 61 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 61 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30144,20 +30146,20 @@ stat $1x
 define grid/x=xtrop gx
 stat $1[g=gx]
  !-> stat sst5[g=gx]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 65 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30176,7 +30178,7 @@ stat $1[g=gx]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30188,18 +30190,18 @@ stat $1[g=gx]
  -DELETE I        M: 68 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 68 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 69 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30221,7 +30223,7 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst5[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  strip regrid on X: SST5 --> GXYT             @LIN
@@ -30439,7 +30441,7 @@ let $1xyt = $1[g=gxyt]
  dealloc  dynamic grid GXYT            XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5X    M: 60 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5X    M: 64 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31040,7 +31042,7 @@ say `a,return=isize`
  getgrid (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31164,7 +31166,7 @@ cancel mode verify
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C09,V11 M: 79 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C09,V11 M: 90 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C01,V11 M: 84 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C01,V11 M: 93 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -31388,7 +31390,7 @@ show grid
     GRID (G012)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31398,7 +31400,7 @@ Dynamic grids:
     GRID (G012)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31412,7 +31414,7 @@ Dynamic grids:
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
     AXIS (AX012)                         use count:   1
     AXIS (AX020)                         use count:   1
  
@@ -31532,7 +31534,7 @@ SHOW GRID temp[d=2,gx=sst[d=1],y=10s:2s:.2]             ! implicit Y axis
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31541,7 +31543,7 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5"
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31550,7 +31552,7 @@ SHOW GRID FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]) ! imposed T axis
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
@@ -31559,7 +31561,7 @@ SHOW GRID SORTI(temp[d=2,gx=sst[d=1],y=10s:2s:.2])      ! abstract X axis
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31576,15 +31578,15 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5",FFTA(sst[d=1,gx=temp[d=2],y=10
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
- (AX005)   T (CYC/hour)         2 r   0.00034224           0.00068448
+ (AX001)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31597,7 +31599,7 @@ SHOW GRID
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31609,14 +31611,14 @@ SHOW GRID
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 list/j=1:5 j
              VARIABLE : J
-                        axis (AX002)
+                        axis (AX004)
              SUBSET   : 5 points (LATITUDE)
  9.2S   / 5:  5.00000
  9.4S   / 4:  4.00000
@@ -31628,7 +31630,7 @@ SHOW GRID MYGRID
     GRID MYGRID
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31638,14 +31640,14 @@ Dynamic grids:
     GRID (G011)                          use count:   1
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 Dynamic axes:
     AXIS (AX011)                         use count:   1
-    AXIS (AX002)                         use count:   2
+    AXIS (AX004)                         use count:   2
     AXIS (AX020)                         use count:   1
  
  
@@ -31800,7 +31802,7 @@ sh data
 sh grid ndata
     GRID GSH1
  name       axis              # pts   start                end
- PSXT91_100 LONGITUDE          10mr   139.5W               130.5W
+ PSXT191_100 LONGITUDE         10mr   139.5W               130.5W
  PSYT39_51 LATITUDE            13 i   2.167S               1.833N
  PSZT1_1   DEPTH (m)            1 r-  5                    5
  TWEEKS1   TIME                21 r   20-AUG-1982 00:00    07-JAN-1983 00:00
@@ -34068,9 +34070,6 @@ SORTN(DAT)
 SORTN_STR(STR)
     Returns indices of string data, sorted on the N axis in increasing order, null strings at the end
     STR: String variable to sort in N (STRING)
-SORTI_STR(DAT)
-    Returns indices of string data, sorted on the I axis in increasing order
-    DAT: String variable to sort in I (STRING)
 sh func/ext sample*
 SAMPLEI(TO_BE_SAMPLED,X_INDICES)
     sample a field at a list of X indices
@@ -34179,28 +34178,10 @@ SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
     XPTS: X values of sample points
     YPTS: Y values of sample points
     TPTS: T values of sample points
-SAMPLEI_MULTI(I_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to I indices which may vary in JKL
-    I_INDICES: indices upon which to sample
-    DAT_TO_SAMPLE: data to sample using I indices
-SAMPLEJ_MULTI(J_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to J indices which may vary in IKL
-    J_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using J indices
-SAMPLEK_MULTI(K_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to K indices which may vary in IJL
-    K_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using K indices
-SAMPLEL_MULTI(L_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to L indices which may vary in IJK
-    L_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using L indices
-SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
-    Returns data sampled at a set of (X,Y,T) points, using nearest grid intersection
-    DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample
-    XPTS: X values of sample points
-    YPTS: Y values of sample points
-    TPTS: T values of sample points
+SAMPLE_FAST_I(V,Indices)
+    Fast 1D sample variable using set of indices
+    V: Variable to sample
+    Indices: List of indices at which to sample
  
 go bench_sorti.jnl
  
@@ -36890,56 +36871,56 @@ show data/var
     1> ./bn_delimited_read_1.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V2       V2                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V3       V3                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V4       V4                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V5       V5                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V6       V6                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V7       V7                               1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V8       V8                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V9       V9                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V10      V10                              1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
  
  /DELIMITERS="\t,\,"
 list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
@@ -37038,11 +37019,11 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_1.dat  (default)
  name     title                             I         J         K         L         M         N
- A1       A1                               1:20480   ...       ...       ...       ...       ...
- A2       A2                               1:20480   ...       ...       ...       ...       ...
- A3       A3                               1:20480   ...       ...       ...       ...       ...
- A4       A4                               1:20480   ...       ...       ...       ...       ...
- A5       A5                               1:20480   ...       ...       ...       ...       ...
+ A1       A1                               1:7       ...       ...       ...       ...       ...
+ A2       A2                               1:7       ...       ...       ...       ...       ...
+ A3       A3                               1:7       ...       ...       ...       ...       ...
+ A4       A4                               1:7       ...       ...       ...       ...       ...
+ A5       A5                               1:7       ...       ...       ...       ...       ...
  
 list a1,a2,a3,a4,a5
              DATA SET: ./bn_delimited_read_1.dat
@@ -37150,18 +37131,18 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
  
 file/form=delimited/delimiter=" " bn_delimited_read_2.dat
 show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+ V2       V2                               1:3       ...       ...       ...       ...       ...
        (Time of day)
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+ V3       V3                               1:3       ...       ...       ...       ...       ...
        (all values missing)
  
 list v1,v2
@@ -37462,367 +37443,367 @@ show data/full
     1> ./bn_delimited_read_CO2.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V2       V2                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V3       V3                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V4       V4                               1:20      ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
             Data type = NUMERIC
             Conversion /TYPE=DATE
-             days on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+             days on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V5       V5                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V6       V6                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V7       V7                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V8       V8                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V9       V9                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V10      V10                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V11      V11                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V11      V11                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V12      V12                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V12      V12                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V13      V13                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V13      V13                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V14      V14                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V14      V14                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V15      V15                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V15      V15                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V16      V16                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V16      V16                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V17      V17                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V17      V17                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V18      V18                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V18      V18                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V19      V19                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V19      V19                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V20      V20                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V20      V20                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V21      V21                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V21      V21                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V22      V22                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V22      V22                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V23      V23                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V23      V23                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V24      V24                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V24      V24                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V25      V25                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V25      V25                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V26      V26                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V26      V26                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V27      V27                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V27      V27                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V28      V28                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V28      V28                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V29      V29                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V29      V29                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V30      V30                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V30      V30                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V31      V31                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V31      V31                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V32      V32                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V32      V32                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V33      V33                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V33      V33                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V34      V34                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V34      V34                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V35      V35                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V35      V35                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V36      V36                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V36      V36                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V37      V37                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V37      V37                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V38      V38                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V38      V38                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V39      V39                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V39      V39                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V40      V40                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V40      V40                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V41      V41                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V41      V41                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V42      V42                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V42      V42                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V43      V43                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V43      V43                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V44      V44                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V44      V44                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V45      V45                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V45      V45                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V46      V46                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V46      V46                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V47      V47                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V47      V47                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V48      V48                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V48      V48                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V49      V49                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V49      V49                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V50      V50                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V50      V50                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V51      V51                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V51      V51                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V52      V52                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V52      V52                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V53      V53                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V53      V53                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V54      V54                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V54      V54                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V55      V55                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V55      V55                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V56      V56                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V56      V56                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V57      V57                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V57      V57                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V58      V58                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V58      V58                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V59      V59                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V59      V59                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V60      V60                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V60      V60                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V61      V61                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V61      V61                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V62      V62                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V62      V62                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V63      V63                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V63      V63                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V64      V64                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V64      V64                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V65      V65                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V65      V65                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V66      V66                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V66      V66                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V67      V67                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V67      V67                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V68      V68                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V68      V68                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V69      V69                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V69      V69                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V70      V70                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V70      V70                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V71      V71                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V71      V71                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V72      V72                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V72      V72                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
  
  /DELIMITERS="\t,\,"
  /FORMAT = DELIMITED
@@ -38366,7 +38347,7 @@ set mode stupid
 set mode diag
 set mem/size=0.05
 show mem/free
- Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 100
@@ -38380,11 +38361,11 @@ show mem/free
 use/ord=x-y test_100x100.nc
 list/prec=1 a[i=1:100:10] !  this looks just right!!
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38392,7 +38373,7 @@ list/prec=1 a[i=1:100:10] !  this looks just right!!
  -DELETE A        M:  1 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  1 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : IF I EQ J THEN 1 ELSE A0
                         regrid: 10 delta on X
              FILENAME : test_100x100.nc
@@ -38504,7 +38485,7 @@ show grid
  Last successful data access was on grid (G005)
     GRID (G005)
  name       axis              # pts   start                end
- (AX010)   X                   10 r   1                    91
+ (AX017)   X                   10 r   1                    91
  YAX1_100  Y                  100 r   1                    100
  normal    Z
  normal    T
@@ -38514,7 +38495,7 @@ show grid
 ! should be a diagonal path of steps all the way across the plot
 shade a[i=1:100:10]
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38522,7 +38503,7 @@ shade a[i=1:100:10]
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  2 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  3 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
 setting up 2D plot
  -DELETE A        M:  3 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
 PPL plot 279  complete
@@ -38833,8 +38814,11 @@ save/q/clob/file=g.nc b
 can var a b
  
 sp ncrename -h -v A,a f.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 1 variable
 sp ncrename -h -v A,a -v B,b f2.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 2 variables
 sp ncrename -h -v B,b g.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 1 variable
 use f.nc
 use f2.nc
 use g.nc
@@ -39961,37 +39945,37 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ3            XAX_SUBSPANORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- strip regrid on X: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ strip regrid on X: V2D_REG --> (G002)           @XACT
  found   V2D_REG  M: 69 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_REG  M: 70 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  13.0000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_reg[i=1,l=1:15:2]
- dealloc  dynamic grid (G008)          (AX017)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- strip regrid on T: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ strip regrid on T: V2D_REG --> (G002)           @XACT
  strip moduloing V2D_REG on T axis:     1    15 dset:   1
  rdstride V2D_REG  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  doing moduloing V2D_REG on T axis:     1     5 dset:   1
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_REG  M: 72 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  16-MAR-0000 / 2:   71.000
  15-MAY-0000 / 3:  131.000
@@ -40490,29 +40474,29 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ4            XIRREG_SUBNORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  strip regrid on X: V2D_IRR --> (G018)           @XACT
  found   V2D_IRR  M:146 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_IRR  M:147 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  12.1000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_irr[i=1,l=1:15:2]
- dealloc  dynamic grid (G018)          (AX010)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  strip regrid on T: V2D_IRR --> (G018)           @XACT
  strip moduloing V2D_IRR on T axis:     1    15 dset:   1
  rdstride V2D_IRR  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
@@ -40520,7 +40504,7 @@ set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_IRR  M:149 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  15-MAR-0000 / 2:   70.249
  15-MAY-0000 / 3:  131.249
@@ -44858,52 +44842,52 @@ let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:146 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 can mem/all
  -DELETE A        M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  
 def grid/like=taux agrid
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
 set mode diag
 let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
  dealloc  dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 can mem/all
  -DELETE TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE A        M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
 can data/all
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 ! Some tests taken from  bn_strides_revs_perms.jnl but with
 ! DEFINE GRID/LIKE= testing permuting and reversing axes
@@ -44971,16 +44955,16 @@ LIST VAR[i=2:4:2,j=1:3:2]
  dealloc  dynamic grid (G014)          (AX040)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    2    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:146 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -45001,19 +44985,19 @@ CANC MEM/ALL
 ! modulo requests cannot use strides (as this example shows)
 set axis/modulo XAX1_4
 LIST VAR[I=1:10:3,j=1,k=1,l=1]    ! 1, 4, 7(3), 10(2)
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  strip moduloing VAR on X axis:     1    10 dset:   1
  reading VAR      M:151 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  doing moduloing VAR on X axis:     1     4 dset:   1
  regrid  VAR      M:147 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 3 delta on X
              FILENAME : bn_strides.cdf
@@ -45034,7 +45018,7 @@ cancel axis/modulo XAX1_4
  
 ! strides applied to more than one axis need special attention in IS_REGRID
 LIST VAR[i=2:4:2,j=1:3:2]
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
@@ -45063,16 +45047,16 @@ LIST VAR[i=2:6:2,j=1:5:2]
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -45089,7 +45073,7 @@ LIST VAR[i=2:6:2,j=1:5:2]
  
 ! test sub-region selection on strides axis
 let a = bigvar[i=1:40:5]
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
 list/j=1/k=1/l=1 a[i=3:5]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -45164,17 +45148,17 @@ cancel mem/all
 LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2]
  dealloc  dynamic grid (G001)          (AX041)   (AX040)   ZAX1_20   TAX1_10   NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   1 I:    3    6  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip regrid on X: UNEVENVAR --> (G001)           @XACT
  rdstride UNE-NVAR C:  8 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE UNE-NVAR M:151 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN]
                         regrid: on X
              FILENAME : bn_strides.cdf
@@ -45192,7 +45176,7 @@ set region/i=3:6/j=2:4/k=1:2/l=1
  
 use/order=yx bn_strides
 list bigvar[i=3:9:2, j=2:6:2, k=1:3:2]
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  -DELETE UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G001)          (AX040)   (AX042)   (AX043)   TAX1_10   NORMAL    NORMAL
@@ -46556,7 +46540,7 @@ set axis/units=feet `temp,return=zaxis`
 show axis `temp,return=zaxis`
  !-> show axis PSZT
  name       axis              # pts   start                end
- PSZT      Z (FEET)            27 i-  5                    3824
+ PSZT      Z (feet)            27 i-  5                    3824
    Axis span (to cell edges) = 4149
  
 ! unrecognized units
@@ -46565,7 +46549,7 @@ set axis/units="something" `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon
@@ -46582,7 +46566,7 @@ set axis/units=something `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon using word DEG
@@ -46602,7 +46586,7 @@ list/x=130w/y=1/k=1/L=1:5 temp
              SUBSET   : 5 points (TIME)
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                        130.5W  
                        100
  17-AUG-1982 12 / 1:  25.9777
@@ -46617,9 +46601,9 @@ set axis/units=meters `temp,return=yaxis`
 list/x=222/k=1/l=1/y=-0.5:0.5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 4 points (Y (METERS))
+             SUBSET   : 4 points (Y (meters))
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46640,7 +46624,7 @@ list/x=222/k=1/l=1/y=-0.5:0.5 temp
              FILENAME : gt4d011.cdf
              SUBSET   : 4 points (LATITUDE)
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46655,10 +46639,10 @@ set axis/units=meters `temp,return=taxis`
 list/x=130w/y=1/k=1/l=1:5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 5 points (T (METERS))
+             SUBSET   : 5 points (T (meters))
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                 130.5W  
                 100
  22702   / 1:  25.9777
@@ -46673,9 +46657,9 @@ show grid temp
     GRID PS3DT2
  name       axis              # pts   start                end
  PSXT1     LONGITUDE          160mr   130.5E               70.5W
- PSYT      Y (SECONDS)        100 i   -28.836              48.568
- PSZT      Z (ZORRO)           27 i-  5                    3824
- TIME11    T (METERS)          25 r   22702                26206
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+ PSZT      Z (zorro)           27 i-  5                    3824
+ TIME11    T (meters)          25 r   22702                26206
  normal    E
  normal    F
  
@@ -48324,11 +48308,11 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET Ver. 6.861
+ LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET Ver. 6.93
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 2  8.000E+00  7.100E+00 0.060    0  SYSTEM  @ASNOAA/PMEL TMAP
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
- LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS17-MAR-2014 15:54:03
+ LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS29-OCT-2014 15:56:43
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 4  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLONGITUDE : 179E
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
@@ -49444,11 +49428,11 @@ let the_data_var = {4,5,4}
  
 list/format=comma country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
      COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR
 1   / 1:"JP",1,4000,1000500,"w",4  
@@ -49457,11 +49441,11 @@ list/format=comma country, id, aa, bb, newcountry, the_data_var
  
 list/format=tab/norow country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
 COUNTRY	ID	AA	BB	NEWCOUNTRY	THE_DATA_VAR
 "JP"	1	4000	1000500	"w"	4  
@@ -49605,7 +49589,7 @@ GO bn_long_revision_num.jnl
  
 ! ferret version
 sh sym FERRET_VERSION
-FERRET_VERSION = "6.861"
+FERRET_VERSION = "6.93"
  
 ! history attribute
 let a = 12
@@ -49623,7 +49607,7 @@ LAB1 = "X : 0.5 to 314.5"
  
 ! show commands without an argument, lists version number at the top
 sho command
- Commands in Program FERRET   version6.861:
+ Commands in Program FERRET   version6.93:
  SET
  SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE
  SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN
@@ -49638,7 +49622,7 @@ sho command
  SET VARIABLE/TITLE/UNIT/GRID/BAD/DATASET/NAME/SCALEFAC/OFFSET/OUTTYPE/SIGMA
       /CURVILIN
  SET GRID/SAVE/RESTORE
- SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE
+ SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE/NAME
  SET MEMORY/SIZE
  SET ATTRIBUT/TYPE/DATASET/OUTPUT/LIKE/QUIET
  SET NCCACHE/SIZE/NELEMS/PREEMPT
@@ -49759,7 +49743,7 @@ go ptest
 PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20)
  
 sh sym win_title
-WIN_TITLE = "17-Mar-14:15:53"
+WIN_TITLE = "29-Oct-14:15:55"
  
 set win/title="set the title"
 sho sym win_title
@@ -49777,7 +49761,7 @@ sho sym win_title
 WIN_TITLE = "_"
  
 set win/title="($session_date):($session_time)"
- !-> set win/title="17-Mar-14:15:53"
+ !-> set win/title="29-Oct-14:15:55"
  
 ! If the date or time starts with a blank then we get an extra
 ! underscore in the window title. Evaluating the symbols into
@@ -49786,16 +49770,16 @@ set win/title="($session_date):($session_time)"
 ! If so substitute another string.
  
 DEFINE SYMBOL the_date = ($session_date"SESSION_DATE")
- !-> DEFINE SYMBOL the_date = 17-Mar-14
+ !-> DEFINE SYMBOL the_date = 29-Oct-14
 DEFINE SYMBOL the_time = ($session_time"SESSION_TIME")
- !-> DEFINE SYMBOL the_time = 15:53
+ !-> DEFINE SYMBOL the_time = 15:55
 SET WIN/TITLE="($the_date):($the_time)"
- !-> SET WIN/TITLE="17-Mar-14:15:53"
+ !-> SET WIN/TITLE="29-Oct-14:15:55"
  
 can win/all
 set win/new
 sh sym win_title
-WIN_TITLE = "17-Mar-14:15:53"
+WIN_TITLE = "29-Oct-14:15:55"
  
 GO bn_reset
 cancel mode verify
@@ -52864,10 +52848,6 @@ IS_ELEMENT_OF_STR_N(VAR,VALUES)
     Returns 1 if 1st arg contains any of the values in 2nd arg, 2 if case-insensitve match, else 0
     VAR: string (STRING)
     VALUES: strings to search (STRING)
-IS_ELEMENT_OF_STR(VAR,VALUES)
-    Returns 1 if first argument contains any of the values in argument 2, else 0
-    VAR: data to test (STRING)
-    VALUES: strings to search for (STRING)
  
 ! FILL on data with subspan modulo axis, got wrong data
 GO bn_reset
@@ -54101,40 +54081,40 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
-(PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
-                                 modulo          DOUBLE      1    T       360
+(PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
+                                 modulo          DOUBLE      1    T       360
                                  axis            CHAR        1    T       X
                                  standard_name   CHAR        9    F       longitude
-                                 orig_file_axnameCHAR        10   F       PSXT91_108
+                                 orig_file_axnameCHAR        11   F       PSXT191_108
   
-(PSYT35_56)            DOUBLE    units           CHAR        13   T       degrees_north
+(PSYT135_56)           DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        6    T       uneven
                                  axis            CHAR        1    T       Y
                                  standard_name   CHAR        8    F       latitude
-                                 bounds          CHAR        14   T       PSYT35_56_bnds
-                                 orig_file_axnameCHAR        9    F       PSYT35_56
+                                 bounds          CHAR        15   T       PSYT135_56_bnds
+                                 orig_file_axnameCHAR        10   F       PSYT135_56
   
- PSYT35_56_bnds        DOUBLE
+ PSYT135_56_bnds       DOUBLE
   
-(PSZT1_10)             DOUBLE    units           CHAR        6    T       METERS
+(PSZT11_10)            DOUBLE    units           CHAR        6    T       meters
                                  positive        CHAR        4    T       down
                                  point_spacing   CHAR        6    T       uneven
                                  axis            CHAR        1    T       Z
                                  standard_name   CHAR        5    F       depth
-                                 bounds          CHAR        13   T       PSZT1_10_bnds
-                                 orig_file_axnameCHAR        8    F       PSZT1_10
+                                 bounds          CHAR        14   T       PSZT11_10_bnds
+                                 orig_file_axnameCHAR        9    F       PSZT11_10
   
- PSZT1_10_bnds         DOUBLE
+ PSZT11_10_bnds        DOUBLE
   
 (TIME11)               DOUBLE    units           CHAR        30   T       hour since 1980-01-14 14:00:00
                                  time_origin     CHAR        20   T       14-JAN-1980 14:00:00
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        5    F       TIME1
+                                 orig_file_axnameCHAR        6    F       TIME11
   
  TEMP                  FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -54146,40 +54126,40 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
-(PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
-                                 modulo          DOUBLE      1    T       360
+(PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
+                                 modulo          DOUBLE      1    T       360
                                  axis            CHAR        1    T       X
                                  standard_name   CHAR        9    F       longitude
-                                 orig_file_axnameCHAR        10   F       PSXT91_108
+                                 orig_file_axnameCHAR        11   F       PSXT191_108
   
-(PSYT35_56)            DOUBLE    units           CHAR        13   T       degrees_north
+(PSYT135_56)           DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        6    T       uneven
                                  axis            CHAR        1    T       Y
                                  standard_name   CHAR        8    F       latitude
-                                 bounds          CHAR        14   T       PSYT35_56_bnds
-                                 orig_file_axnameCHAR        9    F       PSYT35_56
+                                 bounds          CHAR        15   T       PSYT135_56_bnds
+                                 orig_file_axnameCHAR        10   F       PSYT135_56
   
- PSYT35_56_bnds        DOUBLE
+ PSYT135_56_bnds       DOUBLE
   
-(PSZT1_10)             DOUBLE    units           CHAR        6    T       METERS
+(PSZT11_10)            DOUBLE    units           CHAR        6    T       meters
                                  positive        CHAR        4    T       down
                                  point_spacing   CHAR        6    T       uneven
                                  axis            CHAR        1    T       Z
                                  standard_name   CHAR        5    F       depth
-                                 bounds          CHAR        13   T       PSZT1_10_bnds
-                                 orig_file_axnameCHAR        8    F       PSZT1_10
+                                 bounds          CHAR        14   T       PSZT11_10_bnds
+                                 orig_file_axnameCHAR        9    F       PSZT11_10
   
- PSZT1_10_bnds         DOUBLE
+ PSZT11_10_bnds        DOUBLE
   
-(TIME12)               DOUBLE    units           CHAR        30   T       hour since 1980-01-14 14:00:00
+(TIME111)              DOUBLE    units           CHAR        30   T       hour since 1980-01-14 14:00:00
                                  time_origin     CHAR        20   T       14-JAN-1980 14:00:00
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        5    F       TIME1
+                                 orig_file_axnameCHAR        6    F       TIME11
   
  TEMP                  FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -54538,12 +54518,12 @@ use coads_climatology
 set axis/stride=6/offset=5 `sst,return=xaxis`
  !-> set axis/stride=6/offset=5 COADSX
 show axis `sst,return=xaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LONGITUDE           30mr   31E                  19E(379)
+ (AX009)   LONGITUDE           30mr   31E                  19E(379)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 cancel axis/stride `sst,return=xaxis`
- !-> cancel axis/stride (AX005)
+ !-> cancel axis/stride (AX009)
  
 !--- 8.2 stride value is not an integer factor of the axis length
 ! warning: it may lose modulo property
@@ -54767,9 +54747,9 @@ show axis `sst,return=xaxis`
  (AX051)   LONGITUDE           90mr   21E                  17E(377)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 show axis `sst,return=yaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LATITUDE            45 r   89S                  87N
+ (AX009)   LATITUDE            45 r   89S                  87N
    Axis span (to cell edges) = 180
 show axis `sst,return=taxis`
  !-> show axis (AX048)
@@ -55349,9 +55329,6 @@ LEV_NUM = "28"
 LEV_DEL = "0.05"
 set view lr; shade/lev a; sh sym lev*
 LEV_TEXT = ""
-Internal overflow expressing 500000.0 Mwords as words (1783793664) 
-Unable to allocate the requested 500000.0 Mwords of memory.
-Memory remaining at 0.2 Mwords.
 LEV_MIN = "-0.3"
 LEV_MAX = "1.1"
 LEV_NUM = "28"
@@ -55400,6 +55377,9 @@ LIST/NOHEAD/I=91:94/J=37/K=1/L=1 temp,salt
 ! Previously this did not have the effect of changing the precision.
 LIST/NOHEAD/I=91:94/J=37/K=1/L=1/PREC=3 temp,salt
 139.5W / 91:  27.3  2.37E-04
+Internal overflow expressing 500000.0 Mwords as words (1783793664) 
+Unable to allocate the requested 500000.0 Mwords of memory.
+Memory remaining at 0.2 Mwords.
 138.5W / 92:  27.3  2.38E-04
 137.5W / 93:  27.2  2.38E-04
 136.5W / 94:  27.2  2.38E-04
@@ -55498,7 +55478,7 @@ set mem/siz=90
 sh sym ferret_memory
 FERRET_MEMORY = "90"
 show memory
- Current size of FERRET memory cache: 90 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 90 MegaWords  (1 word = 8 bytes)
  
 set mem/size=0.05
 sh sym ferret_memory
@@ -55510,7 +55490,7 @@ FERRET_MEMORY = "0.2"
  
 set mem/siz=25.6  ! return to the default setting
 show memory
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
  
 GO bn_reset
 cancel mode verify
@@ -55772,31 +55752,38 @@ EXPND_BY_LEN_STR(var,len,nx)
 FC_ISUBSET(index_list,lengths,nx,FullData)
 EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len)
 EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EXPNDI_BY_M_COUNTS(dat,counts,max_row_len)
 STR_MASK(STRING,MASK,--)
 SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
+SEPARATE(A,Rowsize,FixLongitudes)
 ADD_9(A,B,C,D,E,F,G,H,I)
 APPENDE(ENS,VAR)
 AVET(A)
-BIN_INDEX_WT(INDEX,WT,INDXMAX)
 DATES(Offsets)
-EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EFSTRINGS(--)
 FACTORIAL(A)
 FFT_AMP(A)
 FFTA_SAMPLE(A)
 FFT_PHAS(A)
-IS_ELEMENT_OF_STR(VAR,VALUES)
+LENGTH_OF_STRINGS(--)
+MAXSTRLEN(A)
 PASS_THRU(A)
+PASS_THRU_STRING(A)
 PERCENT_GOOD_T(A)
-SAMPLEI_MULTI(I_INDICES,DAT_TO_SAMPLE)
-SAMPLEJ_MULTI(J_INDICES,DAT_TO_SAMPLE)
-SAMPLEK_MULTI(K_INDICES,DAT_TO_SAMPLE)
-SAMPLEL_MULTI(L_INDICES,DAT_TO_SAMPLE)
-SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
-SORTI_STR(DAT)
+PICK_A_STRING(A,N)
+PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3)
+SAMPLE_FAST_I(V,Indices)
+SEPARATE(A,Rowsize,FixLongitudes)
+SEPARATE_STR(A,Rowsize,FixLongitudes)
 STORAGE(A)
 STRING_ARG(Flags,NString)
+STRING_CAT3(A,B,C)
+STRING_LEN_SUM(S1,S2)
+STRINGS_AS_ARGS(S1,S2,NCHAR)
+STR_MISSING(MASK,STR,REPL)
 STUDENT_T_CUTOFF(P,nf)
 SUBTRACT(A,B)
+WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename)
  
  
 GO bn_reset
@@ -58349,7 +58336,7 @@ SORTI(DAT)
           T: inherited from argument(s)
           E: inherited from argument(s)
           F: inherited from argument(s)
-    DAT: variable to sort in I
+    DAT: variable to sort in I (FLOAT)
         Influence on output axes:
           X: no influence (indicate argument limits with "[]")
           Y: passed to result grid
@@ -60006,10 +59993,10 @@ SH GRID am
  
 GO bn_clock_syms
 SH SYM delta_cpu, clock_secs, current_date, current_time
-DELTA_CPU = "39.644"
-CLOCK_SECS = "68.286"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:54:28"
+DELTA_CPU = "40.2969"
+CLOCK_SECS = "69.632"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:57:05"
 ! test special symbols DELTA_CPU, CLOCK_SECS
 !
 ! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE
@@ -60018,8 +60005,8 @@ CURRENT_TIME = "15:54:28"
 use gt4d011
 shade/k=1 temp[L=@ave]
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.037994"
-CLOCK_SECS = "68.357"
+DELTA_CPU = "0.043993"
+CLOCK_SECS = "69.723"
  
 repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=1
@@ -60033,60 +60020,60 @@ repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=9
 !-> REPEAT: K=10
 let ten_plots = ($DELTA_CPU)
- !-> DEFINE VARIABLE ten_plots = 0.297955
+ !-> DEFINE VARIABLE ten_plots = 0.304954
 sh sym DELTA_CPU, CLOCK_SECS
 DELTA_CPU = "0"
-CLOCK_SECS = "69.07"
+CLOCK_SECS = "70.43"
  
 let  sumclock = 0
 let  sumcpu = 0
 sh sym CLOCK_SECS
-CLOCK_SECS = "69.07"
+CLOCK_SECS = "70.431"
 repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\
 let sumcpu =`sumcpu + dt`)
  !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`)
 !-> REPEAT: K=1
- !-> DEFINE VARIABLE dt = 0.036995
- !-> DEFINE VARIABLE sumcpu =0.036995
+ !-> DEFINE VARIABLE dt = 0.030996
+ !-> DEFINE VARIABLE sumcpu =0.030996
 !-> REPEAT: K=2
- !-> DEFINE VARIABLE dt = 0.032995
- !-> DEFINE VARIABLE sumcpu =0.06999
+ !-> DEFINE VARIABLE dt = 0.037994
+ !-> DEFINE VARIABLE sumcpu =0.06899
 !-> REPEAT: K=3
- !-> DEFINE VARIABLE dt = 0.035994
- !-> DEFINE VARIABLE sumcpu =0.105984
+ !-> DEFINE VARIABLE dt = 0.042993
+ !-> DEFINE VARIABLE sumcpu =0.111983
 !-> REPEAT: K=4
- !-> DEFINE VARIABLE dt = 0.030995
- !-> DEFINE VARIABLE sumcpu =0.136979
+ !-> DEFINE VARIABLE dt = 0.032995
+ !-> DEFINE VARIABLE sumcpu =0.144978
 !-> REPEAT: K=5
- !-> DEFINE VARIABLE dt = 0.032996
- !-> DEFINE VARIABLE sumcpu =0.169975
+ !-> DEFINE VARIABLE dt = 0.036995
+ !-> DEFINE VARIABLE sumcpu =0.181973
 !-> REPEAT: K=6
- !-> DEFINE VARIABLE dt = 0.030995
- !-> DEFINE VARIABLE sumcpu =0.20097
+ !-> DEFINE VARIABLE dt = 0.031995
+ !-> DEFINE VARIABLE sumcpu =0.213968
 !-> REPEAT: K=7
- !-> DEFINE VARIABLE dt = 0.033995
- !-> DEFINE VARIABLE sumcpu =0.234965
+ !-> DEFINE VARIABLE dt = 0.038995
+ !-> DEFINE VARIABLE sumcpu =0.252963
 !-> REPEAT: K=8
- !-> DEFINE VARIABLE dt = 0.034995
- !-> DEFINE VARIABLE sumcpu =0.26996
+ !-> DEFINE VARIABLE dt = 0.040993
+ !-> DEFINE VARIABLE sumcpu =0.293956
 !-> REPEAT: K=9
- !-> DEFINE VARIABLE dt = 0.037993
- !-> DEFINE VARIABLE sumcpu =0.307953
+ !-> DEFINE VARIABLE dt = 0.029995
+ !-> DEFINE VARIABLE sumcpu =0.323951
 !-> REPEAT: K=10
- !-> DEFINE VARIABLE dt = 0.032995
- !-> DEFINE VARIABLE sumcpu =0.340948
+ !-> DEFINE VARIABLE dt = 0.037994
+ !-> DEFINE VARIABLE sumcpu =0.361945
  
 say `sumcpu`
- !-> MESSAGE/CONTINUE 0.340948
-0.340948
+ !-> MESSAGE/CONTINUE 0.361945
+0.361945
 sh sym CLOCK_SECS
-CLOCK_SECS = "70.242"
+CLOCK_SECS = "71.655"
  
 SH SYM session_date, current_date, session_time, current_time
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:53"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:54:30"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:55"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:57:07"
  
  
 ! ******** V6.3 Additions below ***********
@@ -60727,7 +60714,7 @@ LIST var
  16-JAN-1969 / 20:  0.6617913
  
 CAN AXIS/STRIDE `var,return=taxis`
- !-> CAN AXIS/STRIDE (AX133)
+ !-> CAN AXIS/STRIDE (AX139)
 SET AXIS/STRIDE=12/OFFSET=11 truemonth ! every December
 LIST var
              VARIABLE : COS(T[GT=TRUEMONTH]/100)
@@ -60756,7 +60743,7 @@ LIST var
 SET MODE IGNORE_ERRROR
 ! Previously didnt check for negative offset value
 CAN AXIS/STRIDE `var,return=taxis`
- !-> CAN AXIS/STRIDE (AX139)
+ !-> CAN AXIS/STRIDE (AX130)
 SET AXIS/STRIDE=12/OFFSET=-1 truemonth
  
 ! Previously didnt give err msg; just ignored non-positive stride value
@@ -61318,11 +61305,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890 at ave]
  strip regrid on T: TEMP --> ZNTERMED         @AVE
  reading TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 42 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 on X at AAV, on Y at AAV*
              FILENAME : gtsa056_1.cdf
@@ -61342,13 +61329,13 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gx=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> YNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at AVE, on Y at LIN, on Z at LIN, on T at LIN
              FILENAME : gtsa056_1.cdf
@@ -61368,11 +61355,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gt=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @ASN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
- regrid  TEMP     M: 34 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at LIN, on Y at LIN, on Z at LIN, on T at ASN
@@ -61401,7 +61388,7 @@ plot temp
  getgrid EX#1     C:  5 dset:   2 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS3DT1          PSXT1     PSYT1     PSZT2     TIME14    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
 setting up plot
 PPL plot 753  complete
 plot/over temp[g=u]
@@ -61411,12 +61398,12 @@ plot/over temp[g=u]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 28 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 27 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61428,7 +61415,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN
  strip regrid on T: TEMP --> XNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 23 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -61443,7 +61430,7 @@ plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890]
  strip regrid on X: TEMP --> G5_10G00ABCDEFGH @LIN
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
@@ -61459,12 +61446,12 @@ plot/over temp[g=u at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 26 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 19 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61476,7 +61463,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @AAV
  strip regrid on T: TEMP --> XNTERMED         @AVE
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 18 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 17 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -62606,65 +62593,65 @@ sp cat the_xml_file.xml
    <value>8765.82</value>
 </attribute>
 </axis>
-<axis name="ZAXLEVIT191_1">
+<axis name="XAX_LEV9421_380">
 <attribute name="direction" type="char">
-   <value><![CDATA[K]]></value>
+   <value><![CDATA[I]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[METERS]]></value>
+   <value><![CDATA[degrees_east]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>1</value>
+   <value>360</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>0</value>
+   <value>20.5</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>0</value>
-</attribute>
-<attribute name="positive" type="char">
-   <value><![CDATA[down]]></value>
+   <value>379.5</value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value>no</value>
+   <value><![CDATA[yes]]></value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[ZAXLEVIT191_1]]></value>
+   <value><![CDATA[XAX_LEV9421_380]]></value>
 </attribute>
 </axis>
-<axis name="XAX_LEV9421_380">
+<axis name="ZAXLEVIT191_1">
 <attribute name="direction" type="char">
-   <value><![CDATA[I]]></value>
+   <value><![CDATA[K]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[degrees_east]]></value>
+   <value><![CDATA[METERS]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>360</value>
+   <value>1</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>20.5</value>
+   <value>0</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>379.5</value>
+   <value>0</value>
+</attribute>
+<attribute name="positive" type="char">
+   <value><![CDATA[down]]></value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value><![CDATA[yes]]></value>
+   <value>no</value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[XAX_LEV9421_380]]></value>
+   <value><![CDATA[ZAXLEVIT191_1]]></value>
 </attribute>
 </axis>
 <axis name="YAX_LEV94">
@@ -62935,7 +62922,7 @@ define axis/t=1-jan-2010:30-mar-2010:1/units=days tin
 define axis/t=1-jan-2010:30-mar-2010:10/units=days tout
 let tt = t[gt=tout,L=1:10]
 sh grid tt
-    GRID (G089)
+    GRID (G091)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -63142,7 +63129,7 @@ list/x=2:3 sgrid
  
 let tpts = 39798 + 87*RANDU(I)
 show grid tt
-    GRID (G103)
+    GRID (G089)
  name       axis              # pts   start                end
  X10       X                  201 r   0                    10
  Y10       Y                  201 r   0                    10
@@ -64062,9 +64049,9 @@ list contents
              VARIABLE : { SPAWN:"cat redirect_journal.txt" }
              SUBSET   : 47 points (X)
  1    /  1:" ! NOAA/PMEL TMAP"                                                          
- 2    /  2:" ! FERRET v6.861  "                                                         
- 3    /  3:" ! Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14"                           
- 4    /  4:" ! 17-Mar-14 15:53     "                                                    
+ 2    /  2:" ! FERRET v6.93  "                                                          
+ 3    /  3:" ! Linux 2.6.18-398.el5PAE 32-bit - 10/29/14"                               
+ 4    /  4:" ! 29-Oct-14 15:55     "                                                    
  5    /  5:""                                                                           
  6    /  6:"! "                                                                         
  7    /  7:"!! --- 22. produce some output to stdout and stderr"                        
@@ -64126,23 +64113,24 @@ sh trans
 variable transforms e.g.SST[T=1-jan:15-mar at DDC]
    code        description                  code        description
    ----        -----------                  ----        -----------
-   @ITP        interpolated                 @SPZ        Parzen smoothed
-   @AVE        averaged                     @FAV        ave-filled
-   @VAR        variance                     @FLN        linear-filled
-   @SUM        summed                       @FNR        nearest-filled
-   @RSU        running sum                  @NGD        number of valid
-   @SHF        shifted                      @NBD        number flagged bad
-   @MIN        minimum                      @LOC        location
-   @MAX        maximum                      @WEQ        weighted equal
-   @DDC        centered derivative          @CDA        closest dist above
-   @DDF        forward derivative           @CDB        closest dist below
-   @DDB        backwards derivative         @CIA        closest index above
-   @DIN        integrated                   @CIB        closest index below
-   @IIN        indef. integ.                @EVN        event mask
-   @SBX        box smoothed                 @MED        median smoothed
-   @SBN        binomial smoothed            @SMX        maximum smoothed
-   @SWL        Welch smoothed               @SMN        minimum smoothed
-   @SHN        Hanning smoothed
+   @ITP        interpolated                 @FAV        ave-filled
+   @AVE        averaged                     @FLN        linear-filled
+   @VAR        variance                     @FNR        nearest-filled
+   @SUM        summed                       @NGD        number of valid
+   @RSU        running sum                  @NBD        number flagged bad
+   @SHF        shifted                      @LOC        location
+   @MIN        minimum                      @WEQ        weighted equal
+   @MAX        maximum                      @CDA        closest dist above
+   @DDC        centered derivative          @CDB        closest dist below
+   @DDF        forward derivative           @CIA        closest index above
+   @DDB        backwards derivative         @CIB        closest index below
+   @DIN        integrated                   @EVN        event mask
+   @IIN        indef. integ.                @MED        median smoothed
+   @SBX        box smoothed                 @SMX        maximum smoothed
+   @SBN        binomial smoothed            @SMN        minimum smoothed
+   @SWL        Welch smoothed               @STD        standard deviation
+   @SHN        Hanning smoothed             @WGT        weights for avg,int
+   @SPZ        Parzen smoothed
  
 regridding transforms e.g.SST[GX=x5deg at AVE]
    code        description                  code        description
@@ -66285,7 +66273,7 @@ let a = x[gx=0:2:1]; save/clob/file=a1.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX128)   X                    3 r   0                    2
+ (AX129)   X                    3 r   0                    2
  normal    Y
  normal    Z
  normal    T
@@ -66301,7 +66289,7 @@ let a = x[gx=1:3:1]; save/clob/file=a2.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX120)   X                    3 r   1                    3
+ (AX116)   X                    3 r   1                    3
  normal    Y
  normal    Z
  normal    T
@@ -66322,14 +66310,14 @@ can var/all; can dat/all
 use a1
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
  2   / 3:  2.000
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66344,7 +66332,7 @@ use a2
  
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66353,7 +66341,7 @@ list x[gx=a[d=1]]
 ! The bug was that this listed 1,2,3 rather than 0,1,2
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66369,7 +66357,7 @@ list x[gx=a[d=1,i=1:3]]
 ! Why is the following different?
 list x[gx=a[d=1],i=1:3]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66532,40 +66520,40 @@ can mode ver
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.122
-randu2_randn2       0.552
-randu2_randn2       0.336
-randu2_randn2       0.760
-randu2_randn2       0.809
+randu2_randn2       0.686
+randu2_randn2       0.027
+randu2_randn2       0.551
+randu2_randn2       0.149
+randu2_randn2       0.450
              VARIABLE : RANDU2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.671
-randu2_randn2       0.410
-randu2_randn2       0.644
-randu2_randn2       0.858
-randu2_randn2       0.128
+randu2_randn2       0.235
+randu2_randn2       0.948
+randu2_randn2       0.391
+randu2_randn2       0.973
+randu2_randn2       0.515
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.340
-randu2_randn2       0.473
-randu2_randn2       0.649
-randu2_randn2       0.815
-randu2_randn2       0.391
-randu2_randn2       0.219
+randu2_randn2       0.689
+randu2_randn2       0.507
+randu2_randn2       0.348
+randu2_randn2       0.656
+randu2_randn2       0.413
+randu2_randn2       0.374
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.402
-randu2_randn2       0.871
-randu2_randn2       0.011
-randu2_randn2       0.384
-randu2_randn2       0.489
-randu2_randn2       0.938
+randu2_randn2       0.769
+randu2_randn2       0.341
+randu2_randn2       0.439
+randu2_randn2       0.311
+randu2_randn2       0.145
+randu2_randn2       0.181
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66590,40 +66578,40 @@ randu2_randn2       0.900
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.204
-randu2_randn2      -0.952
-randu2_randn2      -0.076
-randu2_randn2      -0.894
-randu2_randn2      -0.123
+randu2_randn2       0.354
+randu2_randn2       0.641
+randu2_randn2       0.923
+randu2_randn2       1.707
+randu2_randn2      -0.248
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       1.686
-randu2_randn2      -1.735
-randu2_randn2      -0.659
-randu2_randn2      -1.317
-randu2_randn2      -1.823
+randu2_randn2       0.039
+randu2_randn2       0.350
+randu2_randn2       1.126
+randu2_randn2      -0.992
+randu2_randn2      -1.041
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -0.193
-randu2_randn2      -0.565
-randu2_randn2       0.181
-randu2_randn2       0.976
-randu2_randn2       1.204
-randu2_randn2      -0.993
+randu2_randn2       1.024
+randu2_randn2      -1.786
+randu2_randn2      -1.033
+randu2_randn2       0.754
+randu2_randn2      -1.856
+randu2_randn2      -0.369
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -0.764
-randu2_randn2      -0.760
-randu2_randn2      -0.391
-randu2_randn2       0.717
-randu2_randn2       1.299
-randu2_randn2       0.840
+randu2_randn2      -0.310
+randu2_randn2      -0.748
+randu2_randn2       0.207
+randu2_randn2      -0.560
+randu2_randn2       0.364
+randu2_randn2       0.176
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66648,14 +66636,14 @@ randu2_randn2      -0.124
  Column  1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1)
  Column  2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z)
  Column  3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z)
-randu2_randn2       1.791       1.791       0.735
-randu2_randn2       1.343       1.343       0.735
-randu2_randn2       0.735       0.735       0.340
-randu2_randn2       0.019       0.019       0.735
-randu2_randn2      -0.682      -0.459       0.735
-randu2_randn2      -0.459      -0.459       0.735
-randu2_randn2       0.340       0.340       0.735
-randu2_randn2       0.766       0.766       0.766
+randu2_randn2       1.354       1.354       0.543
+randu2_randn2       0.845       0.845       0.543
+randu2_randn2       0.320       0.543       0.320
+randu2_randn2       0.543       0.320       0.497
+randu2_randn2      -0.718      -0.390       0.497
+randu2_randn2      -0.390      -0.390       0.497
+randu2_randn2       0.312       0.312       0.497
+randu2_randn2       0.497       0.497       0.543
  
 GO bn_reset
 cancel mode verify
@@ -71108,10 +71096,10 @@ list a2[ge=eoffset at ave, gf=fax4day at ave]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71153,10 +71141,10 @@ list a2[ge=eoffset at sum, gf=fax4day at sum]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71198,10 +71186,10 @@ list a2[ge=eoffset at var, gf=fax4day at var]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71407,18 +71395,18 @@ list afcst[gf=ehour at max]
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- strip regrid on F: AFCST --> (G106)           @MAX
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ strip regrid on F: AFCST --> (G103)           @MAX
  eval    AFCST    C:  7 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  regrid  AFCST    M: 46 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
              VARIABLE : _F[GF=EDAY]
                         regrid: 24 hour on F at MAX
              SUBSET   : 5 points (FORECAST)
@@ -71429,8 +71417,8 @@ list afcst[gf=ehour at max]
  05-JAN-1990 00 / 5:  32497.0
 show grid
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G106)
-    GRID (G106)
+ Last successful data access was on grid (G103)
+    GRID (G103)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -71463,7 +71451,7 @@ show data fourfiles
  
 list/i=3 sst[T=@ave]
  getgrid EX#1     C:  5 dset:   5 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ allocate dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  strip --> SST[T=01-JAN00:45:31-DEC06:34 at AVE,D=5]
@@ -71491,7 +71479,7 @@ list/i=3 sst[T=@ave]
 cancel data fourfiles
  -DELETE SST      M: 66 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  -DELETE SST      M: 74 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L: -999 -999  M:    1    4  N: -999 -999
- dealloc  dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ dealloc  dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  
 ! Create airt in the other datasets by LET/D definitions.
 let/d=ens2 airt = sst + 1
@@ -72437,8 +72425,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72448,10 +72436,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -72488,8 +72476,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72499,10 +72487,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
                                  _FillValue      DOUBLE      1    T       -1.E+34
@@ -72527,8 +72515,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72538,10 +72526,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -72566,8 +72554,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72577,10 +72565,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST3                  INT       missing_value   INT         1    T       -999
                                  _FillValue      INT         1    T       -999
@@ -72597,8 +72585,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72608,10 +72596,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST3                  SHORT     missing_value   SHORT       1    T       -999
                                  _FillValue      SHORT       1    T       -999
@@ -72629,8 +72617,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72640,10 +72628,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST4                  BYTE      missing_value   BYTE        1    T       -99
                                  _FillValue      BYTE        1    T       -99
@@ -72690,8 +72678,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72701,10 +72689,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -72735,8 +72723,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72746,10 +72734,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST3                  INT       missing_value   INT         1    T       -999
                                  _FillValue      INT         1    T       -999
@@ -72790,8 +72778,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72801,10 +72789,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST2                  DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
                                  _FillValue      DOUBLE      1    T       -1.E+34
@@ -72826,8 +72814,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72837,10 +72825,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST2                  FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -72862,8 +72850,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72873,10 +72861,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST4                  INT       missing_value   INT         1    T       -99
                                  _FillValue      INT         1    T       -99
@@ -72898,8 +72886,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72909,10 +72897,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST4                  BYTE      missing_value   BYTE        1    T       -99
                                  _FillValue      BYTE        1    T       -99
@@ -72930,8 +72918,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72941,10 +72929,10 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
   
 (TIME10)               DOUBLE    units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
-                                 modulo          DOUBLE      1    T       8765.82
+                                 modulo          CHAR        1    T
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST4                  INT       missing_value   INT         1    T       -99
                                  _FillValue      INT         1    T       -99
@@ -73160,8 +73148,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73169,12 +73157,12 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
                                  standard_name   CHAR        8    F       latitude
                                  orig_file_axnameCHAR        11   F       COADSY46_48
   
-(TIME13)               FLOAT     units           CHAR        30   T       hour since 0000-01-01 00:00:00
+(TIME101)              FLOAT     units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
                                  modulo          FLOAT       1    T       8765.82
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -73192,8 +73180,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73201,12 +73189,12 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
                                  standard_name   CHAR        8    F       latitude
                                  orig_file_axnameCHAR        11   F       COADSY46_48
   
-(TIME13)               FLOAT     units           CHAR        30   T       hour since 0000-01-01 00:00:00
+(TIME101)              FLOAT     units           CHAR        30   T       hour since 0000-01-01 00:00:00
                                  time_origin     CHAR        20   T       01-JAN-0000 00:00:00
                                  modulo          FLOAT       1    T       8765.82
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
                                  _FillValue      DOUBLE      1    T       -1.E+34
@@ -73233,8 +73221,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73247,7 +73235,7 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
                                  modulo          DOUBLE      1    T       8765.82
                                  axis            CHAR        1    T       T
                                  standard_name   CHAR        4    F       time
-                                 orig_file_axnameCHAR        4    F       TIME
+                                 orig_file_axnameCHAR        6    F       TIME10
   
  SST                   FLOAT     missing_value   FLOAT       1    T       -1.E+34
                                  _FillValue      FLOAT       1    T       -1.E+34
@@ -73271,8 +73259,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73296,8 +73284,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             INT       units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73321,8 +73309,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   17-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73745,15 +73733,15 @@ save/clob/file=a.nc a
 sp ncdump a.nc
 netcdf a {
 dimensions:
-	TIME = UNLIMITED ; // (3 currently)
+	TIME10 = UNLIMITED ; // (3 currently)
 variables:
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	double A(TIME) ;
+	double TIME10(TIME10) ;
+		TIME10:units = "hour since 0000-01-01 00:00:00" ;
+		TIME10:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME10:modulo = " " ;
+		TIME10:axis = "T" ;
+		TIME10:standard_name = "time" ;
+	double A(TIME10) ;
 		A:missing_value = -1.e+34 ;
 		A:_FillValue = -1.e+34 ;
 		A:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ;
@@ -73761,11 +73749,11 @@ variables:
 		A:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME10 = 366, 1096.485, 1826.97 ;
 
  A = -0.0994369294629927, -0.0415768591404557, 0.141480238197389 ;
 }
@@ -73774,15 +73762,15 @@ save/clob/file=aa.nc sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave]
 sp ncdump aa.nc
 netcdf aa {
 dimensions:
-	TIME = UNLIMITED ; // (3 currently)
+	TIME10 = UNLIMITED ; // (3 currently)
 variables:
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	double E410(TIME) ;
+	double TIME10(TIME10) ;
+		TIME10:units = "hour since 0000-01-01 00:00:00" ;
+		TIME10:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME10:modulo = " " ;
+		TIME10:axis = "T" ;
+		TIME10:standard_name = "time" ;
+	double E410(TIME10) ;
 		E410:missing_value = -1.e+34 ;
 		E410:_FillValue = -1.e+34 ;
 		E410:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ;
@@ -73790,11 +73778,11 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME10 = 366, 1096.485, 1826.97 ;
 
  E410 = -0.0994369294629927, -0.0415768591404557, 0.141480238197389 ;
 }
@@ -73825,15 +73813,15 @@ save/clob/file=aa.nc/outtype=float sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave]
 sp ncdump aa.nc
 netcdf aa {
 dimensions:
-	TIME = UNLIMITED ; // (3 currently)
+	TIME10 = UNLIMITED ; // (3 currently)
 variables:
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float E410(TIME) ;
+	double TIME10(TIME10) ;
+		TIME10:units = "hour since 0000-01-01 00:00:00" ;
+		TIME10:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME10:modulo = " " ;
+		TIME10:axis = "T" ;
+		TIME10:standard_name = "time" ;
+	float E410(TIME10) ;
 		E410:missing_value = -1.e+34f ;
 		E410:_FillValue = -1.e+34f ;
 		E410:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ;
@@ -73841,11 +73829,11 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME10 = 366, 1096.485, 1826.97 ;
 
  E410 = -0.09943693, -0.04157686, 0.1414802 ;
 }
@@ -74307,6 +74295,54 @@ sh grid sal
  normal    E
  normal    F
  
+! This file from the datset "West Coast Carbon cruises" in our
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+ 
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ 
+sh dat 2
+     currently SET data sets:
+    2> ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc  (default)
+ name     title                             I         J         K         L         M         N
+ PROF     Prof                             ...       ...       ...       ...       1:21      ...
+ TIME     Time                             ...       ...       ...       ...       1:21      ...
+ LATITUDE Latitude                         ...       ...       ...       ...       1:21      ...
+ LONGITUDE
+          Longitude                        ...       ...       ...       ...       1:21      ...
+ ROWSIZE  Number of Observations for this  ...       ...       ...       ...       1:21      ...
+ PRESS_DB PRESS_DB                         1:373     ...       ...       ...       ...       ...
+ PCO2     PCO2                             1:373     ...       ...       ...       ...       ...
+ 
+sh att (profile)
+     attributes for dataset: ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ (profile)._FillValue = -1.E+34
+ (profile).actual_range = 70, 90
+ (profile).cf_role = profile_id 
+ (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt 
+ (profile).long_name = profile ID: Cruise and Station 
+ (profile).missing_value = -1.E+34
+ (profile).orig_file_axname = profile 
+sh grid rowsize
+    GRID GSS1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ normal    T
+ PROFILE   E                   21 r   70                   90
+ normal    F
+sh grid pco2
+    GRID GSS2
+ name       axis              # pts   start                end
+ OBS1      X                  373 r   1                    373
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
+ 
 GO bn_reset
 cancel mode verify
 GO bn_nco_append
@@ -74358,9 +74394,10 @@ variables:
 		DDAT_ORIG:long_name = "DDAT[GZ=ZAXIS_ORIG at ASN]" ;
 
 // global attributes:
-		:history = "Mon Mar 17 15:54:58 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
-			"FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "Wed Oct 29 15:57:28 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
+			"FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+		:NCO = "4.4.6" ;
 }
  
 GO bn_reset
@@ -74392,8 +74429,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74423,8 +74460,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74485,8 +74522,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! On a SAVE either with /BOUNDS or no bounds qualifier,
@@ -74513,8 +74550,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75681,20 +75718,20 @@ save/file=a.nc/clobber labels
 sp ncdump -h a.nc
 netcdf a {
 dimensions:
-	ENSEMBLE = 3 ;
+	ENSEMBLE1 = 3 ;
 	maxStrlen64 = 64 ;
 variables:
-	double ENSEMBLE(ENSEMBLE) ;
-		ENSEMBLE:long_name = "Ensemble of Realizations" ;
-		ENSEMBLE:axis = "E" ;
-		ENSEMBLE:point_spacing = "even" ;
-	char LABELS(ENSEMBLE, maxStrlen64) ;
+	double ENSEMBLE1(ENSEMBLE1) ;
+		ENSEMBLE1:long_name = "Ensemble of Realizations" ;
+		ENSEMBLE1:axis = "E" ;
+		ENSEMBLE1:point_spacing = "even" ;
+	char LABELS(ENSEMBLE1, maxStrlen64) ;
 		LABELS:long_name = "Realizations" ;
 		LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! The behavior is unchanged for user-defined variables
@@ -75716,8 +75753,8 @@ variables:
 		STRVAR:long_name = "mystrings" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75742,12 +75779,12 @@ fill/lev=(20,30,10)/L=1 sst
  
  
  
-! *********** v6.87 Additions ***********
+! *********** v6.9 Additions ***********
 GO bn_reset
 cancel mode verify
-GO bn687_bug_fixes
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+GO bn69_bug_fixes
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
  
 GO bn_reset
@@ -75872,92 +75909,2730 @@ LAB5 = "FORECAST : 03-JAN-2000 00:00:00 JULIAN"
  
 GO bn_reset
 cancel mode verify
+GO err686_dup_axnames
+! err686_dup_axnames
+! Ticket 1750
+!
+! Make some datasets. Same axis length and name,
+! different coordinates.
+ 
+def ax/x=1:4:1 xaxis_test
+let a = x[gx=xaxis_test]
+save/clob/file=a.nc a
+def ax/x=11:14:1 xaxis_test
+let b = x[gx=xaxis_test]
+save/clob/file=b.nc b
+can var/all; can dat/all
+ 
+! Check axis coords.
+use a; use b
+sh dat
+     currently SET data sets:
+    1> ./a.nc
+ name     title                             I         J         K         L         M         N
+ A        X[GX=XAXIS_TEST]                 1:4       ...       ...       ...       ...       ...
+ 
+    2> ./b.nc  (default)
+ name     title                             I         J         K         L         M         N
+ B        X[GX=XAXIS_TEST]                 1:4       ...       ...       ...       ...       ...
+ 
+sh grid a[d=1]
+    GRID GSI1
+ name       axis              # pts   start                end
+ XAXIS_TEST1 X                  4 r   1                    4
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
+sh grid b[d=2]
+    GRID GRR1
+ name       axis              # pts   start                end
+ XAXIS_TEST X                   4 r   11                   14
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
+ 
+! Write b with its Ferret internal axis name XAXIS_TEST1
+save/clob/file=c.nc a[d=1],b
+sp ncdump -h c.nc
+netcdf c {
+dimensions:
+	XAXIS_TEST1 = 4 ;
+	XAXIS_TEST = 4 ;
+variables:
+	double XAXIS_TEST1(XAXIS_TEST1) ;
+		XAXIS_TEST1:point_spacing = "even" ;
+		XAXIS_TEST1:axis = "X" ;
+	double A(XAXIS_TEST1) ;
+		A:missing_value = -1.e+34 ;
+		A:_FillValue = -1.e+34 ;
+		A:long_name = "X[GX=XAXIS_TEST]" ;
+		A:history = "From a" ;
+	double XAXIS_TEST(XAXIS_TEST) ;
+		XAXIS_TEST:point_spacing = "even" ;
+		XAXIS_TEST:axis = "X" ;
+	double B(XAXIS_TEST) ;
+		B:missing_value = -1.e+34 ;
+		B:_FillValue = -1.e+34 ;
+		B:long_name = "X[GX=XAXIS_TEST]" ;
+		B:history = "From b" ;
+
+// global attributes:
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+}
+ 
+! Yet more combinations
+save/clob/file=c.nc b, a[d=1]
+sp ncdump -h c.nc
+netcdf c {
+dimensions:
+	XAXIS_TEST = 4 ;
+	XAXIS_TEST1 = 4 ;
+variables:
+	double XAXIS_TEST(XAXIS_TEST) ;
+		XAXIS_TEST:point_spacing = "even" ;
+		XAXIS_TEST:axis = "X" ;
+	double B(XAXIS_TEST) ;
+		B:missing_value = -1.e+34 ;
+		B:_FillValue = -1.e+34 ;
+		B:long_name = "X[GX=XAXIS_TEST]" ;
+		B:history = "From b" ;
+	double XAXIS_TEST1(XAXIS_TEST1) ;
+		XAXIS_TEST1:point_spacing = "even" ;
+		XAXIS_TEST1:axis = "X" ;
+	double A(XAXIS_TEST1) ;
+		A:missing_value = -1.e+34 ;
+		A:_FillValue = -1.e+34 ;
+		A:long_name = "X[GX=XAXIS_TEST]" ;
+		A:history = "From a" ;
+
+// global attributes:
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+}
+ 
+! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST
+save/clobber/file=c.nc b
+sp ncdump -h c.nc
+netcdf c {
+dimensions:
+	XAXIS_TEST = 4 ;
+variables:
+	double XAXIS_TEST(XAXIS_TEST) ;
+		XAXIS_TEST:point_spacing = "even" ;
+		XAXIS_TEST:axis = "X" ;
+	double B(XAXIS_TEST) ;
+		B:missing_value = -1.e+34 ;
+		B:_FillValue = -1.e+34 ;
+		B:long_name = "X[GX=XAXIS_TEST]" ;
+		B:history = "From b" ;
+
+// global attributes:
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+}
+ 
+! Subsets also use XAXIS_TEST1
+save/clobber/file=c.nc/i=2:4 b
+sp ncdump -h c.nc
+netcdf c {
+dimensions:
+	XAXIS_TEST2_4 = 3 ;
+variables:
+	double XAXIS_TEST2_4(XAXIS_TEST2_4) ;
+		XAXIS_TEST2_4:point_spacing = "even" ;
+		XAXIS_TEST2_4:axis = "X" ;
+	double B(XAXIS_TEST2_4) ;
+		B:missing_value = -1.e+34 ;
+		B:_FillValue = -1.e+34 ;
+		B:long_name = "X[GX=XAXIS_TEST]" ;
+		B:history = "From b" ;
+
+// global attributes:
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+}
+ 
+! Unless we use /KEEP_AXISNAMES - which removes renaming
+! due to subsetting and also due to internal names
+save/clobber/file=c.nc/i=2:4/keep b
+sp ncdump -h c.nc
+netcdf c {
+dimensions:
+	XAXIS_TEST = 3 ;
+variables:
+	double XAXIS_TEST(XAXIS_TEST) ;
+		XAXIS_TEST:point_spacing = "even" ;
+		XAXIS_TEST:axis = "X" ;
+	double B(XAXIS_TEST) ;
+		B:missing_value = -1.e+34 ;
+		B:_FillValue = -1.e+34 ;
+		B:long_name = "X[GX=XAXIS_TEST]" ;
+		B:history = "From b" ;
+
+// global attributes:
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+}
+ 
+! If we try /KEEP_AXISNAMES but there is a conflict, it's an err
+set mode ignore
+save/clobber/keep/file=nc b,a[d=1]
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err686_cancel_invalid_var
+! err686_cancel_invalid_var
+! ticket 2159
+ 
+! The cancel variable ran into an incorrect setting
+! for variable-in-memory
+ 
+set mode ignore
+let b = 1
+shade b
+ 
+set mode/last ignore
+cancel var b
+ 
+! Shade plot of a less-than-one cell region. Its where the bug came from.
+use coads_climatology
+shade/x=161.1:161.3/y=0.2:0.4/L=1 sst
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err686_redef_ascii_att
+! err686_redef_ascii_att.jnl
+! Bug 2161
+! DEFINE ATT to redefine title or units for variable
+! in ascii dataset caused crash
+ 
+columns/delim=" " EZ.DAT
+sh att v1
+     attributes for dataset: ./EZ.DAT
+ V1.long_name = V1 
+ V1.missing_value = -1.E+34
+ 
+! A new attribuge causes no problems
+define att/output v1.comment = "First var from EZ.DAT"
+sh att v1
+     attributes for dataset: ./EZ.DAT
+ V1.long_name = V1 
+ V1.missing_value = -1.E+34
+ V1.comment = First var from EZ.DAT 
+ 
+! Initial definition of units is ok.
+! Re-defining the title or units causes crash
+define att/output v1.long_name = "vee one"
+ 
+! Initial definition of units is ok.
+! Re-defining units causes crash
+define att/output v1.units="km"
+define att/output v1.units="meters"
+ 
+sh att v1
+     attributes for dataset: ./EZ.DAT
+ V1.long_name = vee one 
+ V1.missing_value = -1.E+34
+ V1.comment = First var from EZ.DAT 
+ V1.units = meters 
+ 
+GO bn_reset
+cancel mode verify
+GO err686_sho_nonexist_att
+! err686_sho_nonexist_att.jnl
+! See ticket 2133
+ 
+!  Too many error messages were issued on this error
+set mode ignore
+ 
+use levitus_climatology
+show att temp.noexist[d=levitus_climatology]
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err686_set_var_name
+! err686_set_var_name.jnl
+! ticket 2152
+! rename user var or file var. Err message was
+! wrong if the name already exists.
+ 
+SET MODE IGNORE
+ 
+let a = 1
+let b = 2
+! Intentional error, new name is already a defined variable
+set var/name=b a
+! This rename is ok
+set var/name=c a
+sh var
+ Created by DEFINE VARIABLE:
+ >>> Definitions that replace any file variable of same name:
+     B = 2
+     C = 1
+ 
+use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+ 
+let a = 1
+let b = 2
+set var/name=b a
+ 
+! Intentional error, new name already in file
+ 
+ 
+! Intentional error, new name already in file
+set var/name=temp salt
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALT     (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ 
+! This rename is ok
+set var/name=salinity salt
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALINITY (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ 
+ 
+! Test LET/D variables:
+let/d=1 myvar = taux - tauy
+! This is an error, new name already in file
+set var/name=psi myvar
+! This is ok, new let/d name associated with the file
+set var/name=diff myvar
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALINITY (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ ------------------------------
+ DIFF[D=gt4d011] = TAUX - TAUY
+ 
+ 
+! another error, new name is a user-var
+yes? set var/name=diff w
+ 
+SET MODE/LAST ignore
+ 
+GO bn_reset
+cancel mode verify
 GO bn_bad_axis_bounds
 ! bn_bad_axis_bounds
 ! Ticket 2146 If there are invalid axis bounds
 ! make them into a dependent variable.
  
-use badbounds.nc
-show data
-     currently SET data sets:
-    1> ./badbounds.nc  (default)
- name     title                             I         J         K         L         M         N
- MONTH_IRREG_BNDS
-                                           1:2       ...       ...       1:12      ...       ...
-       (invalid axis bounds)
- TEMP2    TEMP[GT=MONTH_IRREG at ASN]         1:1       1:1       1:1       1:12      ...       ...
+use badbounds.nc
+show data
+     currently SET data sets:
+    1> ./badbounds.nc  (default)
+ name     title                             I         J         K         L         M         N
+ MONTH_IRREG_BNDS
+                                           1:2       ...       ...       1:12      ...       ...
+       (invalid axis bounds)
+ TEMP2    TEMP[GT=MONTH_IRREG at ASN]         1:1       1:1       1:1       1:12      ...       ...
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_enter_exit_GO
+! GO bn_enter_exit_GO
+! Lines to allow trace of GO scripts:
+!
+! ! Enter_GO and ! Exit_GO lines written to the journal file
+! or output file only if SET REDIRECT is turned on
+ 
+! Check that we have the ! Enter_GO and ! Exit_GO lines
+ 
+set redirect/tee/journal
+go bn_shortgo
+! Enter_GO bn_shortgo
+! bn_shortgo.jnl
+! short script for bn_enter_exit_GO
+ 
+plot/i=1:15/color=red/thick i
+! Exit_GO
+ 
+! Inside an IF
+let a = 1
+if `a gt 0` THEN GO bn_shortgo2
+ !-> if 1 THEN GO bn_shortgo2
+! Enter_GO bn_shortgo2
+! bn_shortgo2.jnl
+! short script extracted from bn_negative_t for bn_enter_exit_GO
+ 
+DEFINE AXIS/T=-10:10:2 tax
+LET tvar = t[gt=tax]
+GO bn_short.sub tvar ave
+! Enter_GO bn_short.sub tvar ave
+! bn_short.sub
+! short script extracted from bn_negative_t.sub for bn_enter_exit_GO
+ 
+LIST/nohead/norow $1[t=-5:9@$2]	! neg/pos t endpoints
+ !-> LIST/nohead/norow tvar[t=-5:9 at ave]	! neg/pos t endpoints
+   2.000
+ 
+! Exit_GO
+! Exit_GO
+ 
+! Inside a REPEAT
+define symbol ok = 0
+repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`)
+ !-> repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`)
+!-> REPEAT: L=1
+ !-> if 0 then go bn_shortgo
+ !-> def sym ok = 1
+!-> REPEAT: L=2
+ !-> if 1 then go bn_shortgo
+! Enter_GO bn_shortgo
+! bn_shortgo.jnl
+! short script for bn_enter_exit_GO
+ 
+plot/i=1:15/color=red/thick i
+! Exit_GO
+ !-> def sym ok = 2
+!-> REPEAT: L=3
+ !-> if 2 then go bn_shortgo
+! Enter_GO bn_shortgo
+! bn_shortgo.jnl
+! short script for bn_enter_exit_GO
+ 
+plot/i=1:15/color=red/thick i
+! Exit_GO
+ !-> def sym ok = 3
+ 
+cancel redirect
+ 
+GO bn_reset
+cancel mode verify
+GO bn_stddev
+! bn_std.jnl
+! New StdDev transform
+ 
+use coads_climatology
+list/x=100/y=10 sst[t=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 100E (interpolated)
+             LATITUDE : 10N (interpolated)
+             TIME     : 01-JAN 00:45 to 01-APR 08:12 (standard deviation)
+          0.4323
+list/x=100/L=1 sst[y=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 100E (interpolated)
+             LATITUDE : 90S to 90N (standard deviation)
+             TIME     : 16-JAN 06:00
+          10.09
+list/y=10/L=1 sst[x=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 20E to 20E(380) (standard deviation)
+             LATITUDE : 10N (interpolated)
+             TIME     : 16-JAN 06:00
+          0.7935
+ 
+use gt4d011.cdf
+list/y=3/l=1/x=233 u[z=@STD]
+             VARIABLE : ZONAL VELOCITY (cm/sec)
+             FILENAME : gt4d011.cdf
+             LONGITUDE: 127W
+             LATITUDE : 3N (interpolated)
+             DEPTH (m): 0 to 100 (standard deviation)
+             TIME     : 17-AUG-1982 12:00
+          3.366
+list/y=3/l=1 temp[x=@std]
+             VARIABLE : TEMPERATURE (deg. C)
+             FILENAME : gt4d011.cdf
+             SUBSET   : 10 points (DEPTH (m))
+             LONGITUDE: 140W to 122W (standard deviation)
+             LATITUDE : 3N (interpolated)
+             TIME     : 17-AUG-1982 12:00
+ 5     /  1:  0.2508
+ 15    /  2:  0.2559
+ 25    /  3:  0.2623
+ 35    /  4:  0.2318
+ 45    /  5:  0.1489
+ 55    /  6:  0.1136
+ 65    /  7:  0.2355
+ 75    /  8:  0.4054
+ 85    /  9:  0.5649
+ 95    / 10:  0.7755
+list/y=3/l=1 temp[z=@std,x=@std]
+             VARIABLE : TEMPERATURE (deg. C)
+             FILENAME : gt4d011.cdf
+             LONGITUDE: 140W to 122W (standard deviation)
+             LATITUDE : 3N (interpolated)
+             DEPTH (m): 0 to 100 (standard deviation)
+             TIME     : 17-AUG-1982 12:00
+          0.1946
+ 
+GO bn_reset
+cancel mode verify
+GO bn_set_axis_name
+! bn_set_axis_name.jnl
+! ticket 2160 Implementing new qualifier SET AXIS/NAME
+! 3/2014
+!
+!
+! Prepare a dataset with a time axis
+ 
+define axis/t=1-may-2010:5-may-2010:1/units=days daysaxis
+let a = t[gt=daysaxis]
+save/clobber/file=a.nc a
+ 
+cancel variable a
+cancel axis daysaxis
+ 
+!  We define some axis, then open a dataset with an axis of that name.
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days daysaxis
+ 
+use a.nc
+ 
+! The axis in the dataset has been renamed.
+say `a,return=taxis`
+ !-> MESSAGE/CONTINUE DAYSAXIS1
+DAYSAXIS1
+ 
+! So, rename our user-defined axis
+set axis/name=days2000 daysaxis
+ 
+! and now rename the one from the dataset back to its original name
+set axis/name=daysaxis `a,return=taxis`
+ !-> set axis/name=daysaxis DAYSAXIS1
+sh grid a
+    GRID GSI1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ daysaxis  TIME                 5 r   01-MAY-2010 00:00    05-MAY-2010 00:00
+ normal    E
+ normal    F
+ 
+cancel data/all
+ 
+! If an axis is used in several datsets, renaming it of course
+! changes the name for all grids.
+! The attribute structure gets updated as well.
+ 
+! Make several datasets with the same x axis.
+define axis/x=1:13:1/units=meters x13axis
+let a = x[gx=x13axis]
+let b = 3*x[gx=x13axis]
+let c = 5*x[gx=x13axis]
+save/clobber/file=a.nc a
+save/clobber/file=b.nc b
+save/clobber/file=c.nc c
+ 
+can var/all
+can axis x13axis
+ 
+! Open them in Ferret; all grids are the same.
+use a.nc, b.nc, c.nc
+say `a[d=1],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+say `b[d=2],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+say `c[d=3],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+ 
+! Rename the axis
+set axis/name=x_in_meters x13axis
+say `a[d=1],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+say `b[d=2],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+say `c[d=3],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+ 
+! For SHOW DAT/ATT we get info from the attribute structure.
+! It has the udated name.
+sh dat/att
+     currently SET data sets:
+    1> ./a.nc
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ A                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        13   T       X[GX=X13AXIS]
+  
+    2> ./b.nc
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ B                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        15   T       3*X[GX=X13AXIS]
+  
+    3> ./c.nc  (default)
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        24   T       FERRET V6.93   29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ C                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        15   T       5*X[GX=X13AXIS]
+  
+ 
+! Intentional errors
+set mode ignore
+ 
+! Name already in use
+set axis/name=days2000 x_in_meters
+ 
+! Missing or illegal name
+set axis/name x_in_meters
+set axis/name=45 x_in_meters
+set axis/name=.fr x_in_meters
+ 
+set mode/last ignore
+ 
+! *********** v6.9+ Additions ***********
+GO bn_reset
+cancel mode verify
+GO bn691_bug_fixes
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
+ 
+GO bn_reset
+cancel mode verify
+GO err69_arg_type_error
+! err69_arg_type_error
+! See ticket 2169
+!
+set mode ignore
+sh func  tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+    A: time steps to convert
+    B: variable with reference time axis
+    C: output precision (STRING)
+sh func /detail tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+        Axes of result:
+          X: inherited from argument(s)
+          Y: inherited from argument(s)
+          Z: inherited from argument(s)
+          T: inherited from argument(s)
+          E: inherited from argument(s)
+          F: inherited from argument(s)
+    A: time steps to convert (FLOAT)
+        Influence on output axes:
+          X: passed to result grid
+          Y: passed to result grid
+          Z: passed to result grid
+          T: passed to result grid
+          E: passed to result grid
+          F: passed to result grid
+    B: variable with reference time axis (FLOAT)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+    C: output precision (STRING)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+ 
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+             VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes")
+             TIME     : 03-JAN-2000 00:00
+        "03-JAN-2000 00:00"
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ 
+set mode /last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_bad_bounds
+! err69_bad_bounds.jnl
+! See ticket 2170
+ 
+set mode ignore
+ 
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_even.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_PTSPAC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_non_enclose.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_uneven.nc
+             TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_IRR)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  7.000
+13-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  4.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+sh axis TAX_BB*
+ name       axis              # pts   start                end
+ TAX_BB_IRR TIME                6 i   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 31
+ TAX_BB_EVEN_NOENC TIME         6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ TAX_BB_PTSPAC TIME             6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_const_array
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174
+! expressions are not allowed in constant-array definitions.
+ 
+set mode ignore
+ 
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
+ 
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
+ 
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
+ 
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+ 
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+             VARIABLE : {-0.001, 1.23E-2, -45.E3}
+             SUBSET   : 3 points (X)
+ 1   / 1:     -0.001
+ 2   / 2:      0.012
+ 3   / 3: -45000.000
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_multi_label_ascii
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM
+! ticket 2176
+! Multi-line labels and ascii fonts.
+ 
+plot/vs/nolab {0,1},{0,1}
+ 
+ 
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+ 
+ 
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+ 
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+ 
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+ 
+! escape just the special characters.
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+ 
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ens_badvalue
+! err69_ens_badvalue.jnl
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled
+! when defining an ensemble.
+ 
+use maize_1.nc, maize_2.nc, maize_3.nc
+ 
+! Note the _FillValue,  flag
+sho att maize_yield
+     attributes for dataset: ./maize_3.nc
+ MAIZE_YIELD._FillValue = 9.96921E+36
+ MAIZE_YIELD.long_name =  Maize harvest 
+ MAIZE_YIELD.units = kgC.m-2.yr-1 
+ MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize 
+ensemble ens = 1,2,3
+ 
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
+             LONGITUDE: 8W(-8) to 6W(-6)
+             LATITUDE: 29.25N
+             E: 0.5 to 3.5 (number of valid)
+ Column  1: MAIZE_YIELD[D=maize_1] is  Maize harvest (kgC.m-2.yr-1)
+ Column  2: MAIZE_YIELD[D=maize_2] is  Maize harvest (kgC.m-2.yr-1)
+ Column  3: MAIZE_YIELD[D=maize_3] is  Maize harvest (kgC.m-2.yr-1)
+ Column  4: MAIZE_YIELD[D=ENS,E=@NGD] is  Maize harvest (# of points)
+        MAIZE_YIELD  MAIZE_YI MAIZE_Y MAIZE_YIELD
+7.75W  / 1:     ....  0.05247  0.1022   2.000
+7.25W  / 2:  0.01818  0.03588  0.0049   3.000
+6.75W  / 3: -0.00002  0.02030 -0.0139   3.000
+6.25W  / 4:     ....     ....    ....   0.000
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_by_levels
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_histogram
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
+ 
+GO bn_reset
+cancel mode verify
+GO err69_repl_scinot
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+ 
+let a = 1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (1.E-10)
+(1.E-10)
+ 
+let a = -1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.E-10)
+(-1.E-10)
+ 
+let a = -1.23e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.23E-10)
+(-1.23E-10)
+ 
+let a = -1.23e-2
+say (`a`)
+ !-> MESSAGE/CONTINUE (-0.0123)
+(-0.0123)
+ 
+GO bn_reset
+cancel mode verify
+GO err691_bnds_case
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+ 
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+ 
+set mode/last upcase_output
+ 
+GO bn_reset
+cancel mode verify
+GO err69_plot_vs_labs
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
+ 
+use coads_climatology
+ 
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+set v right; plot/vs c,b; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+set v right; plot/trans/vs c,b; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+GO bn_reset
+cancel mode verify
+GO err69_levels_v
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes
+! made to throw out data outside 3 std when
+! computing the mean and std dev for color levels.
+ 
+use "lev_v_bug.nc"
+shade/lev=v var2d
+ 
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+LEV_TEXT = "V"
+LEV_HISTO_LEVELS = "1.1,1.2,1.6,1.9,2.4,2.5,3.8,5.4,10.2,13.6,14.9"
+LEV_MIN = "-1.E+34"
+LEV_NUM = "51"
+LEV_DEL = "2.0000E+32"
+LEV_MAX = "2.0000E+32"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_letd_dsetnum
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
+ 
+use coads_climatology
+let/d=`sst,r=dsetnum` a = 1
+ !-> DEFINE VARIABLE/d=1 a = 1
+sh dat
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ ------------------------------
+ A[D=coads_climatology] = 1
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_long_string_to_xml
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+!
+ 
+list/clobber/file="out.xml"/nohead/norow 1
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+ 
+sp cat out.xml
+   1.000
+<mytag><![CDATA[Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC200406 [...]
+ 
+GO bn_reset
+cancel mode verify
+GO err69_fill_trans
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+ 
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+ 
+list myvar
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             SUBSET   : 15 points (X)
+ 1    /  1:  1.000
+ 2    /  2:  2.000
+ 3    /  3:  3.000
+ 4    /  4:   ....
+ 5    /  5:   ....
+ 6    /  6:   ....
+ 7    /  7:   ....
+ 8    /  8:   ....
+ 9    /  9:   ....
+ 10   / 10:  4.000
+ 11   / 11:   ....
+ 12   / 12:  5.000
+ 13   / 13:  6.000
+ 14   / 14:  7.000
+ 15   / 15:  8.000
+list myvar[x=6 at fnr:2]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 2 pts)
+        ....
+ 
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 10 pts)
+          3.000
+ 
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (ave-filled by 18 pts)
+          4.500
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_load_big_grid
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+ 
+set mode ignore
+ 
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+ 
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+    GRID (G085)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              1828 r   01-JAN-2000 00:00    01-JAN-2005 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+    GRID (G085)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              3654 r   01-JAN-2000 00:00    01-JAN-2010 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+cancel mode ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_write_attribute
+! err69_write_attribute.jnl
+! Bug 1863
+ 
+use gt4d011.cdf
+sh grid temp
+    GRID PS3DT21
+ name       axis              # pts   start                end
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+ TIME16    TIME                25 r   17-AUG-1982 12:00    10-JAN-1983 12:00
+ normal    E
+ normal    F
+let a = temp[x=@ave,y=@ave,L=1]
+ 
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (PSZT2).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double A(TIME16, PSZT21_10) ;
+ 
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double B(TIME16, PSZT21_10) ;
+ 
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i  "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double C(PSZT21_10) ;
+ 
+can data/all
+can var/all
+ 
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+ 
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+ 
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+ 
+use aa
+use bb
+set data 1
+ 
+show att (`temp,r=zaxis`)
+ !-> show att (ZZDEP)
+     attributes for dataset: ./aa.nc
+ (ZZDEP).point_spacing = uneven 
+ (ZZDEP).axis = Z 
+ (ZZDEP).bounds = ZZDEP_bnds 
+ (ZZDEP).positive = down 
+ (ZZDEP).standard_name = depth 
+ (ZZDEP).orig_file_axname = ZZDEP 
+ 
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP1).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP1
+	ZZDEP1 = 15 ;
+	double ZZDEP1(ZZDEP1) ;
+		ZZDEP1:axis = "Z" ;
+		ZZDEP1:bounds = "ZZDEP1_bnds" ;
+		ZZDEP1:positive = "down" ;
+		ZZDEP1:standard_name = "depth" ;
+	double ZZDEP1_bnds(ZZDEP1, bnds) ;
+	double A(ZZDEP1) ;
+ 
+let a = temp[d=2,gz=temp[d=1]]
+ 
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+ 
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+sp rm aa.nc bb.nc
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_countervar_context
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+ 
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+!-> REPEAT: B:1
+ !-> MESSAGE/CONTINUE 1
+1
+!-> REPEAT: B:2
+ !-> MESSAGE/CONTINUE 2
+2
+!-> REPEAT: B:3
+ !-> MESSAGE/CONTINUE 3
+3
+ 
+can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_label_backspace
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+ 
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_and_regridding
+! err69_isready_and_regridding.jnl
+! Ticket 2204: A `var,return=isready` sends Ferret into a hanged
+! state after other contexts have been defined
+ 
+can dat/all
+ 
+! create & load a file with a Gregorian time axis
+def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135}
+let a = t[gt=tax_g]
+save/clob/file=a.nc a
+can var a
+can ax tax_g
+use a.nc
+ 
+! create a variable on a Julian time axis
+def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j
+let b = t[gt=tax_j]
+ 
+! put the Gregorian data on the Julian axis
+let a2 = a
+let a2_on_b = a2[gt=b]
+ 
+! create a climatological axis (Julian)
+def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75}
+ 
+let b_one = missing(1+0*b,1)      !set everything to 1
+let nyr = b_one[gl=tax_jc at modsum] !# years that include each month
+ 
+! Execute some commands which put things into context storage
+ 
+say `a2_on_b,r=title`
+ !-> MESSAGE/CONTINUE A2[GT=B]
+A2[GT=B]
+say `nyr[l=1]`
+ !-> MESSAGE/CONTINUE 23
+23
+ 
+! This got us into a weird hanged state
+IF `a2_on_b,r=isready` THEN
+ !-> IF 1         THEN
+ENDIF
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_and_uvar_regrid
+! err69_vtree_and_uvar_regrid.jnl
+! Ticket 2206: This lead to a crash.
+! 10/9/2014
+ 
+let a = t[gt=1:2:1]
+let b2 = a
+let c = b2[gt=a]
+GO bn_vtree.sub c
+/TREE=ALL
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=USER
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_cancel_axis
+! err69_vtree_cancel_axis
+! Ticket 2201: After a return=isready,
+! cannot cancel the axis used by the var
+! 10-Oct-2014
+ 
+define axis/x=0:360:1 xax1
+define axis/x=0:360:10 xax2
+ 
+let a = x[gx=xax1]
+say `a,return=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX1]
+X[GX=XAX1]
+ 
+let b = a[gx=xax2]
+say `b,return=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+cancel var a b
+cancel axis xax1
+cancel axis xax2
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_bugs
+! err69_isready_bugs.jnl
+! Tickets 2201 and 2215
+ 
+! ticket 2201: isready operation meant we couldn't cancel the second axis
+ 
+def ax/x=0:360:1 xax_isready_1
+def ax/x=0:360:10 xax_isready_2
+let a = x[gx=xax_isready_1]
+say `a,r=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX_ISREADY_1]
+X[GX=XAX_ISREADY_1]
+let b = a[gx=xax_isready_2]
+load b
+say `b,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+ 
+can var a
+can axis xax_isready_1
+can var b
+can axis xax_isready_2
+ 
+! Ticket 2215, only with an unreleased Ferret; the first fix to 2201.
+ 
+let a = x[gx=1:3:1]
+let b = a - a[gx=a]
+let c = 1
+let/unit="m" f = b*c
+say `f,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+say `f,r=unit`
+ !-> MESSAGE/CONTINUE m
+m
+ 
+GO bn_reset
+cancel mode verify
+GO bn_append_dsg
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced.
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!
+! We append more variables to the file, using the same obs dimension.
+ 
+sp rm test_save_dsg.nc
+sp cp test_save_dsg_in.nc test_save_dsg.nc
+ 
+use test_save_dsg.nc
+ 
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+ 
+save/quiet/append/file=test_save_dsg.nc lon360
+ 
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+ 
+sp ncdump -h test_save_dsg.nc
+netcdf test_save_dsg {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:History = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "CF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+}
+ 
+GO bn_reset
+cancel mode verify
+GO bn_global_atts
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41
+ 
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+netcdf global {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventions" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+sp ncdump -h global_copy.nc
+netcdf global_copy {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0FERRET V6.93   29-Oct-14" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventionsCF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+ 
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+ 
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.71    9-May-14 
+ ..Conventions = Existing conventions note, CF-1.0 
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.93   29-Oct-14 
+ ..Conventions = Existing conventions note, , CF-1.6 
+ 
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_conventions_history
+! bn_conventions_history.jnl
+! ticket 2169:
+! Write conventions CF-1.6
+! When appending to the Conventions and history
+! attribute, add the new stuff with a comma and newline.
+ 
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the file 
+ ..Conventions = Conventions for variables named V2 
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the fileFERRET V6.93   29-Oct-14 
+ ..Conventions = Conventions for variables named V2CF-1.6 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_center_key_labels
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key
+ 
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+ 
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+ 
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+ 
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+ 
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up
+ 
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+ 
+can data coads_climatology
+ 
+! Automatically restore regular handling of levels
+shade temp
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_wgt_transform
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+ 
+! Define an XYT grid
+ 
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+ 
+! Varies in y with latitude correction
+shade/l=1 weights
+ 
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+             VARIABLE : VAR[X=@WGT,Y=@WGT]
+             LONGITUDE: 1E to 1E(361) (XY summed)
+             LATITUDE : 90S to 90N (XY summed)
+             TIME     : 16-JAN 12:00
+          5.101E+14
+ 
+! Varies in T because of irregular t axis
+shade/x=1 weights
+ 
+ 
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+ 
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+             TIME: 01-JAN 00:00 to 31-DEC 05:49
+             LONGITUDE: 1E (interpolated)
+             LATITUDE: 1N
+ Column  1: MYWT is VAR[T=@WGT]
+ Column  2: EX#2 is MYWT/SECPERDAY
+                         MYWT   EX#2
+16-JAN 12      /  1:  2678400.  31.00
+15-FEB 02      /  2:  2440152.  28.24
+15-MAR 17      /  3:  2678400.  31.00
+15-APR 05      /  4:  2592000.  30.00
+15-MAY 17      /  5:  2678400.  31.00
+15-JUN 05      /  6:  2592000.  30.00
+15-JUL 17      /  7:  2678400.  31.00
+15-AUG 17      /  8:  2678400.  31.00
+15-SEP 05      /  9:  2592000.  30.00
+15-OCT 17      / 10:  2678400.  31.00
+15-NOV 05      / 11:  2592000.  30.00
+15-DEC 17      / 12:  2678400.  31.00
+ 
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 9 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:  10.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:  10.00
+ 55    / 6:  10.00
+ 65    / 7:  10.00
+ 75    / 8:  10.00
+ 85    / 9:   2.00
+ 
+! This finds the previous result in memory - needs to
+! reuse the correct one.
+ 
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+GO bn_reset
+cancel mode verify
+GO bn_show_outfile
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE=
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+ 
+! test various combinations of /append and /clobber
+ 
+!can mode verify
+ 
+! show axis/outfile
+ 
+ 
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+ 
+SAY ---------------- Just axis month_irreg
+---------------- Just axis month_irreg
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ 
+show axis/append/outfile=a.txt PS*
+ 
+SAY ---------------- appending all axes starting with PS
+---------------- appending all axes starting with PS
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = axis span)
+ PSXU      LONGITUDE          160mr   131E                 70W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+   Axis span (to cell edges) = 80.00004
+ PSYU      LATITUDE           100 i   27.672S              50N
+   Axis span (to cell edges) = 80.2682
+ PSZT      Z (zorro)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSZW      DEPTH (m)           27 i-  10                   4149
+   Axis span (to cell edges) = 4144
+ PSYT5_89  LATITUDE            85 i   20.151S              21.613N
+   Axis span (to cell edges) = 43.60417
+ PSZT1_2   DEPTH (m)            2 r-  5                    15
+   Axis span (to cell edges) = 20
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+   Axis span (to cell edges) = 80.00004
+ PSZT1     Z (METERS)          27 i   5                    3824
+   Axis span (to cell edges) = 4149
+ 
+! show grid/outfile
+ 
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just the grid of sst
+---------------- Just the grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+! show var/outfile
+ 
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+ 
+SAY ---------------- show var output from two user vars
+---------------- show var output from two user vars
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+cancel var/all
+ 
+! show data/outfile
+ 
+show data/append/outfile=a.txt
+ 
+SAY ---------------- appending show data
+---------------- appending show data
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+! combinations of /append and /clobber
+ 
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+ 
+SAY ---------------- Just show data, two show data/clobber commands in a row
+---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just grid of sst
+---------------- Just grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+use coads_climatology
+use levitus_climatology
+ 
+show data/clobber/outfile=a.txt 1
+ 
+SAY ---------------- Just dataset 1
+---------------- Just dataset 1
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show data/append/outfile=a.txt levitus_climatology
+ 
+SAY ---------------- appending datset 2 by name
+---------------- appending datset 2 by name
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+     currently SET data sets:
+    2> ./levitus_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                      1:160     1:90      1:1       ...       ...       ...
+ 
+show grid/clobber/outfile=a.txt PS3*
+ 
+SAY ---------------- only showing all grids starting with PS3
+---------------- only showing all grids starting with PS3
+sp cat a.txt
+      PS3DT
+      PS3DU
+      PS3DW
+      PS3DT2
+ 
+SAY ---------------- tests sending output of vtree to a file
+---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+! bn_tree_outfile.jnl
+ 
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+ 
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+ 
+!
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+   A = 1
+ 
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+   C = SIN(B)
+     B = 1
+ 
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+ 
+! ================
+ 
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1
+   FV1[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+a is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   A = FV1 + FVX
+     FV1
+     FVX
+   in default dataset my_file_vars
+   A = FV1 + FVX
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset other_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1[d=my_file_var]
+     FV1
+********************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: V[D=NOEXIST]
+************************
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   V[D=NOEXIST]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: NOVAR[D=NODSET]
+************************
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   NOVAR[D=NODSET]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+RESHAPE(fvx,fvz) is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FVX
+   FVZ
+   FVX[d=my_file_vars]
+   FVZ[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+     FV1
+       FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+   NOEXIST  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   NOEXIST[GZ(DEPTH)=ZPTS]  (unknown variable)
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+   NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]  (unknown variable)
+   UNKNOWN_AUX  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+     FV1[d=my_file_var]
+     FV1[d=other_file_var]
+     FV1[d=another_file_var]
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+ 
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fvx is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=my_file_var]
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=other_file_var]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=another_file_var]
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+ 
+   FVX[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ILLEGAL RECURSIVE VARIABLES: P1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S3  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: S1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S1  (unknown variable)
+   S3  (unknown variable)
+   in default dataset my_file_vars
+   FV = FV1 + FV1 + FV1
+   in default dataset MY_UVAR_AGG
+   FV = FV1 + FV1 + FV1
+     FV1   (aggregate variable)
+   in default dataset other_file_vars
+   UV = FVX + FVX + FVX
+     FVX = FV1 + X[GX=FVX[D=1],I=1:3]
+   in default dataset MY_UVAR_AGG
+   UV = FVX + FVX + FVX
+     FVX   (aggregate variable)
+       FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+***************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v2 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+         FV1[d=my_file_var]
+         FV1[d=other_file_var]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v3 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+       FV1[d=my_file_var]
+       FV1[d=other_file_var]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: F
+************************
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+       FV1[d=my_file_var]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   FVX[d=my_file_var]
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   F  (unknown variable)
+   FV1[d=my_file_vars]
+   NOEXIST  (unknown variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN GRID: A[G=NOEXIST]
+************************
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   A[G=NOEXIST]  (unknown grid)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[X=45S]
+************************
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   A[X=45S]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[I=1,,J=2]
+************************
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   A[I=1,,J=2]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[P=1]
+************************
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   A[P=1]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+f is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   A = FVZ.LONG_NAME[D=1]
+   in default dataset MY_UVAR_AGG
+   A = ..HISTORY[D=1]
+ 
  
  
 GO bn_reset
 cancel mode verify
-GO bn_enter_exit_GO
-! GO bn_enter_exit_GO
-! Lines to allow trace of GO scripts:
-!
-! ! Enter_GO and ! Exit_GO lines written to the journal file
-! or output file only if SET REDIRECT is turned on
+GO bn_date1900_array
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
  
-! Check that we have the ! Enter_GO and ! Exit_GO lines
  
-set redirect/tee/journal
-go bn_shortgo
-! Enter_GO bn_shortgo
-! bn_shortgo.jnl
-! short script for bn_enter_exit_GO
+sh func/details date1900
+DATE1900(formatted date)
+    Convert date strings into Julian days since 1-Jan-1900
+        Axes of result:
+          X: inherited from argument(s)
+          Y: NORMAL (no axis)
+          Z: NORMAL (no axis)
+          T: NORMAL (no axis)
+          E: NORMAL (no axis)
+          F: NORMAL (no axis)
+    formatted date: dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00") (none) (STRING)
+        Influence on output axes:
+          X: passed to result grid
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+             VARIABLE : DATE1900("01-jan-2001")
+          36890.
+ 
+ 
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+             VARIABLE : DATE1900(DATESTRINGS)
+             SUBSET   : 3 points (X)
+ 1   / 1:  36890.
+ 2   / 2:  36891.
+ 3   / 3:  37465.
  
-plot/i=1:15/color=red/thick i
-! Exit_GO
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+             VARIABLE : T
+                        axis TAXIS
+             SUBSET   : 3 points (TIME)
+ 01-JAN-2001 00 / 1:  36890.
+ 02-JAN-2001 00 / 2:  36891.
+ 30-JUL-2002 00 / 3:  37465.
  
-! Inside an IF
-let a = 1
-if `a gt 0` THEN GO bn_shortgo2
- !-> if 1 THEN GO bn_shortgo2
-! Enter_GO bn_shortgo2
-! bn_shortgo2.jnl
-! short script extracted from bn_negative_t for bn_enter_exit_GO
  
-DEFINE AXIS/T=-10:10:2 tax
-LET tvar = t[gt=tax]
-GO bn_short.sub tvar ave
-! Enter_GO bn_short.sub tvar ave
-! bn_short.sub
-! short script extracted from bn_negative_t.sub for bn_enter_exit_GO
+GO bn_reset
+cancel mode verify
+GO bn_spawn_size
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not
+! the nominalabstract axis length.
  
-LIST/nohead/norow $1[t=-5:9@$2]	! neg/pos t endpoints
- !-> LIST/nohead/norow tvar[t=-5:9 at ave]	! neg/pos t endpoints
-   2.000
+! ticket 981
  
-! Exit_GO
-! Exit_GO
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+             VARIABLE : {SPAWN:"ls *cdf*.jnl"}
+             SUBSET   : 8 points (X)
+ 1   / 1:"bn_cdf_errmsg.jnl"      
+ 2   / 2:"bn_cdf.jnl"             
+ 3   / 3:"bn_cdf_keepax.jnl"      
+ 4   / 4:"bn_netcdf4.jnl"         
+ 5   / 5:"err490_cdf_childax.jnl" 
+ 6   / 6:"err491_cdf_childax.jnl" 
+ 7   / 7:"err65_read_epic_cdf.jnl"
+ 8   / 8:"err667_5d_netcdf.jnl"   
+say `files,return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
  
-! Inside a REPEAT
-define symbol ok = 0
-repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`)
- !-> repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`)
-!-> REPEAT: L=1
- !-> if 0 then go bn_shortgo
- !-> def sym ok = 1
-!-> REPEAT: L=2
- !-> if 1 then go bn_shortgo
-! Enter_GO bn_shortgo
-! bn_shortgo.jnl
-! short script for bn_enter_exit_GO
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+ !-> MESSAGE/CONTINUE 36
+36
  
-plot/i=1:15/color=red/thick i
-! Exit_GO
- !-> def sym ok = 2
-!-> REPEAT: L=3
- !-> if 2 then go bn_shortgo
-! Enter_GO bn_shortgo
-! bn_shortgo.jnl
-! short script for bn_enter_exit_GO
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+ !-> MESSAGE/CONTINUE 3
+3
+list {spawn:"ls xml*.jnl"}
+             VARIABLE : {SPAWN:"ls xml*.jnl"}
+             SUBSET   : 3 points (X)
+ 1   / 1:"xml_header_script.jnl"
+ 2   / 2:"xml_use_coads.jnl"    
+ 3   / 3:"xml_use_numstring.jnl"
  
-plot/i=1:15/color=red/thick i
-! Exit_GO
- !-> def sym ok = 3
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
  
-cancel redirect
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+ !-> MESSAGE/CONTINUE 875
+875
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+GO bn_reset
+cancel mode verify
+GO bn_polygon_log
+! bn_polygon_log.jnl
+! polygon plots on a log axis need tests
+ 
+let xsqr = YSEQUENCE({0,.1,.1,0})
+let ysqr = YSEQUENCE({0,0,.1,.1})
+let xpts = cos(x/10) + 2
+let ypts = x/10+1
+ 
+! Polygon plot
+ 
+set view ul
+polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10
+ 
+! Poly/vlog and /hlog
+! (known bug: Whats up with the colorbar labels?)
+set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10
+set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10
+set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10
+ 
+! These are errors - log of negative values on axis
+ 
+set mode ignore
+ 
+let ybad = x/10 - 1
+let xbad = cos(x/10) + 0.8
+ 
+can view
+polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10
+ 
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
  
+set mode/last ignore
  
 !  *********** Always do a bn_reset  ***********
 !  *********** make sure things clean up well **
@@ -75972,9 +78647,9 @@ yes? ! run bn_all_ef tests
 yes? 
 yes? GO bn_all_ef
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14
- 	17-Mar-14 15:55     
+ 	FERRET v6.93  
+ 	Linux 2.6.18-398.el5PAE 32-bit - 10/29/14
+ 	29-Oct-14 15:57     
 
 SET MODE VERIFY
 ! bn_all_ef.jnl
@@ -76828,8 +79503,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969 ;
@@ -76853,8 +79528,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969, 50757974 ;
@@ -76877,8 +79552,8 @@ variables:
 		B:long_name = "\"one line of text\"" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -76916,8 +79591,8 @@ variables:
 		D:history = "From test_string" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  GFP3 = "" ;
@@ -76951,8 +79626,8 @@ variables:
 		B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_4 = 1, 2, 3, 4 ;
@@ -76992,8 +79667,8 @@ variables:
 		V:long_name = "T[GT=MONTH_IRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 
@@ -77049,8 +79724,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77106,8 +79781,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77161,8 +79836,8 @@ variables:
 		T2:long_name = "Z[GZ=ZIRR]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  ZIRR = 0, 10, 40, 70 ;
@@ -77209,8 +79884,8 @@ variables:
 		V:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_83 = 181, 183, 185 ;
@@ -77270,7 +79945,7 @@ dimensions:
 	COADSX81_81 = 1 ;
 	bnds = 2 ;
 	COADSY46_46 = 1 ;
-	TIME = UNLIMITED ; // (3 currently)
+	TIME4 = UNLIMITED ; // (3 currently)
 variables:
 	double COADSX81_81(COADSX81_81) ;
 		COADSX81_81:units = "degrees_east" ;
@@ -77287,15 +79962,15 @@ variables:
 		COADSY46_46:standard_name = "latitude" ;
 		COADSY46_46:bounds = "COADSY46_46_bnds" ;
 	double COADSY46_46_bnds(COADSY46_46, bnds) ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-		TIME:bounds = "TIME_bnds" ;
-	double TIME_bnds(TIME, bnds) ;
-	float SST(TIME, COADSY46_46, COADSX81_81) ;
+	double TIME4(TIME4) ;
+		TIME4:units = "hour since 0000-01-01 00:00:00" ;
+		TIME4:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME4:modulo = " " ;
+		TIME4:axis = "T" ;
+		TIME4:standard_name = "time" ;
+		TIME4:bounds = "TIME4_bnds" ;
+	double TIME4_bnds(TIME4, bnds) ;
+	float SST(TIME4, COADSY46_46, COADSX81_81) ;
 		SST:missing_value = -1.e+34f ;
 		SST:_FillValue = -1.e+34f ;
 		SST:long_name = "SEA SURFACE TEMPERATURE" ;
@@ -77303,8 +79978,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77317,9 +79992,9 @@ data:
  COADSY46_46_bnds =
   0, 2 ;
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME4 = 366, 1096.485, 1826.97 ;
 
- TIME_bnds =
+ TIME4_bnds =
   0.757499999999993, 731.2425,
   731.2425, 1461.7275,
   1461.7275, 2192.2125 ;
@@ -77336,8 +80011,8 @@ dimensions:
 	COADSX81_81edges = 2 ;
 	COADSY46_46 = 1 ;
 	COADSY46_46edges = 2 ;
-	TIME = UNLIMITED ; // (3 currently)
-	TIMEedges = 4 ;
+	TIME4 = UNLIMITED ; // (3 currently)
+	TIME4edges = 4 ;
 variables:
 	double COADSX81_81(COADSX81_81) ;
 		COADSX81_81:units = "degrees_east" ;
@@ -77356,16 +80031,16 @@ variables:
 		COADSY46_46:edges = "COADSY46_46edges" ;
 	double COADSY46_46edges(COADSY46_46edges) ;
 		COADSY46_46edges:edges = " " ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-		TIME:edges = "TIMEedges" ;
-	double TIMEedges(TIMEedges) ;
-		TIMEedges:edges = " " ;
-	float SST(TIME, COADSY46_46, COADSX81_81) ;
+	double TIME4(TIME4) ;
+		TIME4:units = "hour since 0000-01-01 00:00:00" ;
+		TIME4:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME4:modulo = " " ;
+		TIME4:axis = "T" ;
+		TIME4:standard_name = "time" ;
+		TIME4:edges = "TIME4edges" ;
+	double TIME4edges(TIME4edges) ;
+		TIME4edges:edges = " " ;
+	float SST(TIME4, COADSY46_46, COADSX81_81) ;
 		SST:missing_value = -1.e+34f ;
 		SST:_FillValue = -1.e+34f ;
 		SST:long_name = "SEA SURFACE TEMPERATURE" ;
@@ -77373,8 +80048,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77385,9 +80060,9 @@ data:
 
  COADSY46_46edges = 0, 2 ;
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME4 = 366, 1096.485, 1826.97 ;
 
- TIMEedges = 0.757499999999993, 731.2425, 1461.7275, 2192.2125 ;
+ TIME4edges = 0.757499999999993, 731.2425, 1461.7275, 2192.2125 ;
 
  SST =
   28.28389,
@@ -77424,8 +80099,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -77499,8 +80174,8 @@ variables:
 		A:long_name = "T[GT=TIME]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 0.5, 2 ;
@@ -77526,8 +80201,8 @@ variables:
 		X_:long_name_mod = "axis ABSTRACT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ;
 data:
 
@@ -77550,8 +80225,8 @@ variables:
 		A:history = "From x" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title, longer than the previous limit of 80 characters.  Previously various buffers were set to 80, and storage in ds_title was also too short." ;
 data:
 
@@ -77577,11 +80252,11 @@ variables:
 		A:history = "From t0_cdc" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_long_revision_num.jnl --- history attribute
-		:history = "FERRET V6.861   17-Mar-14" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
 bn_bounds_defineax.jnl --- N+1 def of bounds.
 netcdf irrxzt {
 dimensions:
@@ -77612,8 +80287,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -77684,8 +80359,8 @@ variables:
 		VAR_B:long_name = "my strings" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -77700,7 +80375,7 @@ netcdf a {
 dimensions:
 	COADSX105_105 = 1 ;
 	COADSY45_45 = 1 ;
-	TIME = UNLIMITED ; // (3 currently)
+	TIME4 = UNLIMITED ; // (3 currently)
 variables:
 	double COADSX105_105(COADSX105_105) ;
 		COADSX105_105:units = "degrees_east" ;
@@ -77714,13 +80389,13 @@ variables:
 		COADSY45_45:point_spacing = "even" ;
 		COADSY45_45:axis = "Y" ;
 		COADSY45_45:standard_name = "latitude" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float SST(TIME, COADSY45_45, COADSX105_105) ;
+	double TIME4(TIME4) ;
+		TIME4:units = "hour since 0000-01-01 00:00:00" ;
+		TIME4:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME4:modulo = " " ;
+		TIME4:axis = "T" ;
+		TIME4:standard_name = "time" ;
+	float SST(TIME4, COADSY45_45, COADSX105_105) ;
 		SST:missing_value = -1.e+34f ;
 		SST:_FillValue = -1.e+34f ;
 		SST:long_name = "SEA SURFACE TEMPERATURE" ;
@@ -77728,22 +80403,22 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX105_105 = 229 ;
 
  COADSY45_45 = -1 ;
 
- TIME = 366, 1096.485, 1826.97 ;
+ TIME4 = 366, 1096.485, 1826.97 ;
 }
 bn_attributes.jnl --- 3 modulo set to false
 netcdf a {
 dimensions:
 	COADSX81_81 = 1 ;
 	COADSY45_45 = 1 ;
-	TIME = UNLIMITED ; // (12 currently)
+	TIME7 = UNLIMITED ; // (12 currently)
 variables:
 	double COADSX81_81(COADSX81_81) ;
 		COADSX81_81:units = "degrees_east" ;
@@ -77756,13 +80431,13 @@ variables:
 		COADSY45_45:point_spacing = "even" ;
 		COADSY45_45:axis = "Y" ;
 		COADSY45_45:standard_name = "latitude" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = " " ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float SST(TIME, COADSY45_45, COADSX81_81) ;
+	double TIME7(TIME7) ;
+		TIME7:units = "hour since 0000-01-01 00:00:00" ;
+		TIME7:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME7:modulo = " " ;
+		TIME7:axis = "T" ;
+		TIME7:standard_name = "time" ;
+	float SST(TIME7, COADSY45_45, COADSX81_81) ;
 		SST:missing_value = -1.e+34f ;
 		SST:_FillValue = -1.e+34f ;
 		SST:long_name = "SEA SURFACE TEMPERATURE" ;
@@ -77770,15 +80445,15 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
 
  COADSY45_45 = -1 ;
 
- TIME = 366, 1096.485, 1826.97, 2557.455, 3287.94, 4018.425, 4748.91, 
+ TIME7 = 366, 1096.485, 1826.97, 2557.455, 3287.94, 4018.425, 4748.91, 
     5479.395, 6209.88, 6940.365, 7670.85, 8401.335 ;
 }
 bn_attributes.jnl --- 4 CANCEL MODE upcase_output; original file:
@@ -77878,8 +80553,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 6 after CANCEL MODE upcase_output
 netcdf a {
@@ -77919,8 +80594,8 @@ variables:
 		Elev:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 7 outtput flags to control attribute output
 netcdf a {
@@ -77942,8 +80617,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -77968,8 +80643,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -77988,8 +80663,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78009,8 +80684,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78021,7 +80696,7 @@ dimensions:
 	XAX_LEV9421_380 = 360 ;
 	YAX_LEV94 = 180 ;
 	ZAXLEVIT191_1 = 1 ;
-	TIME = UNLIMITED ; // (2 currently)
+	TIME3 = UNLIMITED ; // (2 currently)
 variables:
 	double XAX_LEV9421_380(XAX_LEV9421_380) ;
 		XAX_LEV9421_380:units = "degrees_east" ;
@@ -78038,13 +80713,13 @@ variables:
 		ZAXLEVIT191_1:point_spacing = "even" ;
 		ZAXLEVIT191_1:axis = "Z" ;
 		ZAXLEVIT191_1:standard_name = "depth" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float TEMP(TIME, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ;
+	double TIME3(TIME3) ;
+		TIME3:units = "hour since 0000-01-01 00:00:00" ;
+		TIME3:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME3:modulo = " " ;
+		TIME3:axis = "T" ;
+		TIME3:standard_name = "time" ;
+	float TEMP(TIME3, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:long_name = "Temperature" ;
@@ -78052,8 +80727,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 12 Check that settings hold for child axis.
 netcdf a {
@@ -78061,7 +80736,7 @@ dimensions:
 	XAX_LEV9421_380281_340 = 60 ;
 	YAX_LEV94121_135 = 15 ;
 	ZAXLEVIT191_1 = 1 ;
-	TIME = UNLIMITED ; // (2 currently)
+	TIME3 = UNLIMITED ; // (2 currently)
 variables:
 	double XAX_LEV9421_380281_340(XAX_LEV9421_380281_340) ;
 		XAX_LEV9421_380281_340:units = "degrees_east" ;
@@ -78078,13 +80753,13 @@ variables:
 		ZAXLEVIT191_1:point_spacing = "even" ;
 		ZAXLEVIT191_1:axis = "Z" ;
 		ZAXLEVIT191_1:standard_name = "depth" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float TEMP(TIME, ZAXLEVIT191_1, YAX_LEV94121_135, XAX_LEV9421_380281_340) ;
+	double TIME3(TIME3) ;
+		TIME3:units = "hour since 0000-01-01 00:00:00" ;
+		TIME3:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME3:modulo = " " ;
+		TIME3:axis = "T" ;
+		TIME3:standard_name = "time" ;
+	float TEMP(TIME3, ZAXLEVIT191_1, YAX_LEV94121_135, XAX_LEV9421_380281_340) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:long_name = "Temperature" ;
@@ -78092,8 +80767,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 13 cancel output of attributes of the variable.
 netcdf a {
@@ -78101,7 +80776,7 @@ dimensions:
 	XAX_LEV9421_380 = 360 ;
 	YAX_LEV94 = 180 ;
 	ZAXLEVIT191_1 = 1 ;
-	TIME = UNLIMITED ; // (2 currently)
+	TIME3 = UNLIMITED ; // (2 currently)
 variables:
 	double XAX_LEV9421_380(XAX_LEV9421_380) ;
 		XAX_LEV9421_380:units = "degrees_east" ;
@@ -78118,52 +80793,52 @@ variables:
 		ZAXLEVIT191_1:point_spacing = "even" ;
 		ZAXLEVIT191_1:axis = "Z" ;
 		ZAXLEVIT191_1:standard_name = "depth" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float TEMP(TIME, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ;
+	double TIME3(TIME3) ;
+		TIME3:units = "hour since 0000-01-01 00:00:00" ;
+		TIME3:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME3:modulo = " " ;
+		TIME3:axis = "T" ;
+		TIME3:standard_name = "time" ;
+	float TEMP(TIME3, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 14 attributes of data from ez data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX042 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float A1(XAX1_5) ;
+	double AX042(AX042) ;
+		AX042:point_spacing = "even" ;
+		AX042:axis = "X" ;
+	float A1(AX042) ;
 		A1:missing_value = -1.e+34f ;
 		A1:_FillValue = -1.e+34f ;
 		A1:long_name = "A1" ;
 		A1:three = 1.f, 2.f, 3.f ;
 		A1:history = "From EZ.DAT" ;
-	float A2(XAX1_5) ;
+	float A2(AX042) ;
 		A2:missing_value = -1.e+34f ;
 		A2:_FillValue = -1.e+34f ;
 		A2:long_name = "A2" ;
 		A2:history = "From EZ.DAT" ;
-	float A3(XAX1_5) ;
+	float A3(AX042) ;
 		A3:missing_value = -1.e+34f ;
 		A3:_FillValue = -1.e+34f ;
 		A3:long_name = "A3" ;
 		A3:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX042 = 1, 2, 3, 4, 5 ;
 
  A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78174,29 +80849,29 @@ data:
 bn_attributes.jnl --- 15 attributes of data from delimited data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX009 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float V1(XAX1_5) ;
+	double AX009(AX009) ;
+		AX009:point_spacing = "even" ;
+		AX009:axis = "X" ;
+	float V1(AX009) ;
 		V1:missing_value = -1.e+34f ;
 		V1:_FillValue = -1.e+34f ;
 		V1:long_name = "V1" ;
 		V1:strval = "2" ;
 		V1:history = "From EZ.DAT" ;
-	float V4(XAX1_5) ;
+	float V4(AX009) ;
 		V4:missing_value = -1.e+34f ;
 		V4:_FillValue = -1.e+34f ;
 		V4:long_name = "V4" ;
 		V4:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX009 = 1, 2, 3, 4, 5 ;
 
  V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78218,8 +80893,8 @@ variables:
 		A:four = "theory" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -78264,8 +80939,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:simulation = "K-Bay OAR3d model (200m)" ;
 		:start_date = "980105000000" ;
 		:option = 0 ;
@@ -78303,10 +80978,10 @@ dimensions:
 	YC = 127 ;
 	bnds = 2 ;
 	TI = UNLIMITED ; // (1 currently)
-	PSXT100_100 = 1 ;
-	PSYT35_56 = 22 ;
-	PSZT1_1 = 1 ;
-	TIME1 = 25 ;
+	PSXT1100_100 = 1 ;
+	PSYT135_56 = 22 ;
+	PSZT11_1 = 1 ;
+	TIME11 = 25 ;
 variables:
 	double XC(XC) ;
 		XC:long_name = "Longitude" ;
@@ -78336,34 +81011,34 @@ variables:
 		ELEV:scale_factor = 0.000274674967954587 ;
 		ELEV:add_offset = 0. ;
 		ELEV:history = "From err491_attval" ;
-	double PSXT100_100(PSXT100_100) ;
-		PSXT100_100:units = "degrees_east" ;
-		PSXT100_100:modulo = 360. ;
-		PSXT100_100:point_spacing = "even" ;
-		PSXT100_100:axis = "X" ;
-		PSXT100_100:standard_name = "longitude" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "degrees_north" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:standard_name = "latitude" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_1(PSZT1_1) ;
-		PSZT1_1:units = "METERS" ;
-		PSZT1_1:positive = "down" ;
-		PSZT1_1:point_spacing = "uneven" ;
-		PSZT1_1:axis = "Z" ;
-		PSZT1_1:standard_name = "depth" ;
-		PSZT1_1:bounds = "PSZT1_1_bnds" ;
-	double PSZT1_1_bnds(PSZT1_1, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:point_spacing = "even" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	float TEMP(TIME1, PSZT1_1, PSYT35_56, PSXT100_100) ;
+	double PSXT1100_100(PSXT1100_100) ;
+		PSXT1100_100:units = "degrees_east" ;
+		PSXT1100_100:point_spacing = "even" ;
+		PSXT1100_100:modulo = 360. ;
+		PSXT1100_100:axis = "X" ;
+		PSXT1100_100:standard_name = "longitude" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "degrees_north" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:standard_name = "latitude" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_1(PSZT11_1) ;
+		PSZT11_1:units = "meters" ;
+		PSZT11_1:positive = "down" ;
+		PSZT11_1:point_spacing = "uneven" ;
+		PSZT11_1:axis = "Z" ;
+		PSZT11_1:standard_name = "depth" ;
+		PSZT11_1:bounds = "PSZT11_1_bnds" ;
+	double PSZT11_1_bnds(PSZT11_1, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:point_spacing = "even" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	float TEMP(TIME11, PSZT11_1, PSYT135_56, PSXT1100_100) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:long_name = "TEMPERATURE" ;
@@ -78371,8 +81046,8 @@ variables:
 		TEMP:units = "deg. C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:dt_internal = 15. ;
 }
 bn_attributes.jnl --- 19 scale and offset attr.
@@ -78413,8 +81088,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XC = -135.50957036625, -135.496120344706, -135.482670323162, 
@@ -78443,7 +81118,7 @@ data:
     -32767, -32767, -32767, -32767, -32767, -32767 ;
 }
 bn_attributes.jnl --- 20 set data type on output int4
-	int TEMP(TIME1, PSZT1_1, PSYT48_48, PSXT91_108) ;
+	int TEMP(TIME11, PSZT11_1, PSYT148_48, PSXT191_108) ;
 		TEMP:missing_value = -1000 ;
 		TEMP:_FillValue = -1000 ;
 		TEMP:long_name = "TEMPERATURE" ;
@@ -78456,7 +81131,7 @@ bn_attributes.jnl --- 20 set data type on output int4
   26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 26, 26, 26, 26, 26, 25, 25, 25 ;
 }
 bn_attributes.jnl --- 21 set data type on output double
-	double SALT(TIME1, PSZT1_1, PSYT48_48, PSXT91_108) ;
+	double SALT(TIME11, PSZT11_1, PSYT148_48, PSXT191_108) ;
 		SALT:missing_value = 0.00999999977648258 ;
 		SALT:_FillValue = 0.00999999977648258 ;
 		SALT:long_name = "(SALINITY(ppt) - 35) /1000" ;
@@ -78496,8 +81171,8 @@ variables:
 		RIGUE:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  J = 2, 4, 6 ;
@@ -78533,8 +81208,8 @@ variables:
 		B:long_name = "hello" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  B = 1 ;
@@ -78573,8 +81248,8 @@ variables:
 		VWND:units = "M/S" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -78624,8 +81299,8 @@ variables:
 		T2:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -78644,133 +81319,135 @@ data:
 bn_attributes.jnl --- 26 attributes of axes
 netcdf a {
 dimensions:
-	PSXT91_108 = 18 ;
-	PSYT35_56 = 22 ;
+	PSXT191_108 = 18 ;
+	PSYT135_56 = 22 ;
 	bnds = 2 ;
-	PSZT1_10 = 10 ;
-	TIME1 = UNLIMITED ; // (1 currently)
+	PSZT11_10 = 10 ;
+	TIME11 = UNLIMITED ; // (1 currently)
 variables:
-	double PSXT91_108(PSXT91_108) ;
-		PSXT91_108:units = "degrees_east" ;
-		PSXT91_108:modulo = 360. ;
-		PSXT91_108:point_spacing = "even" ;
-		PSXT91_108:axis = "X" ;
-		PSXT91_108:standard_name = "longitude" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "degrees_north" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:standard_name = "latitude" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_10(PSZT1_10) ;
-		PSZT1_10:units = "METERS" ;
-		PSZT1_10:positive = "down" ;
-		PSZT1_10:point_spacing = "uneven" ;
-		PSZT1_10:axis = "Z" ;
-		PSZT1_10:standard_name = "depth" ;
-		PSZT1_10:bounds = "PSZT1_10_bnds" ;
-	double PSZT1_10_bnds(PSZT1_10, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	double T2(TIME1, PSZT1_10, PSYT35_56, PSXT91_108) ;
+	double PSXT191_108(PSXT191_108) ;
+		PSXT191_108:units = "degrees" ;
+		PSXT191_108:point_spacing = "even" ;
+		PSXT191_108:modulo = 360. ;
+		PSXT191_108:axis = "X" ;
+		PSXT191_108:standard_name = "longitude" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "degrees_north" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:standard_name = "latitude" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_10(PSZT11_10) ;
+		PSZT11_10:units = "meters" ;
+		PSZT11_10:positive = "down" ;
+		PSZT11_10:point_spacing = "uneven" ;
+		PSZT11_10:axis = "Z" ;
+		PSZT11_10:standard_name = "depth" ;
+		PSZT11_10:bounds = "PSZT11_10_bnds" ;
+	double PSZT11_10_bnds(PSZT11_10, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	double T2(TIME11, PSZT11_10, PSYT135_56, PSXT191_108) ;
 		T2:missing_value = -1.e+34 ;
 		T2:_FillValue = -1.e+34 ;
 		T2:long_name = "T*TEMP" ;
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	PSXT91_108 = 18 ;
-	PSYT35_56 = 22 ;
+	PSXT191_108 = 18 ;
+	PSYT135_56 = 22 ;
 	bnds = 2 ;
-	PSZT1_10 = 10 ;
-	TIME1 = UNLIMITED ; // (1 currently)
+	PSZT11_10 = 10 ;
+	TIME11 = UNLIMITED ; // (1 currently)
 variables:
-	double PSXT91_108(PSXT91_108) ;
-		PSXT91_108:units = "degrees_east" ;
-		PSXT91_108:modulo = 360. ;
-		PSXT91_108:point_spacing = "even" ;
-		PSXT91_108:axis = "X" ;
-		PSXT91_108:standard_name = "longitude" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "degrees_north" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:standard_name = "latitude" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_10(PSZT1_10) ;
-		PSZT1_10:units = "METERS" ;
-		PSZT1_10:positive = "down" ;
-		PSZT1_10:point_spacing = "uneven" ;
-		PSZT1_10:axis = "Z" ;
-		PSZT1_10:standard_name = "depth" ;
-		PSZT1_10:bounds = "PSZT1_10_bnds" ;
-	double PSZT1_10_bnds(PSZT1_10, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	double T2(TIME1, PSZT1_10, PSYT35_56, PSXT91_108) ;
+	double PSXT191_108(PSXT191_108) ;
+		PSXT191_108:units = "degrees" ;
+		PSXT191_108:point_spacing = "even" ;
+		PSXT191_108:new_att = "something" ;
+		PSXT191_108:modulo = 360. ;
+		PSXT191_108:axis = "X" ;
+		PSXT191_108:standard_name = "longitude" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "degrees_north" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:standard_name = "latitude" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_10(PSZT11_10) ;
+		PSZT11_10:units = "meters" ;
+		PSZT11_10:positive = "down" ;
+		PSZT11_10:point_spacing = "uneven" ;
+		PSZT11_10:axis = "Z" ;
+		PSZT11_10:standard_name = "depth" ;
+		PSZT11_10:bounds = "PSZT11_10_bnds" ;
+	double PSZT11_10_bnds(PSZT11_10, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	double T2(TIME11, PSZT11_10, PSYT135_56, PSXT191_108) ;
 		T2:missing_value = -1.e+34 ;
 		T2:_FillValue = -1.e+34 ;
 		T2:long_name = "T*TEMP" ;
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	PSXT91_108 = 18 ;
-	PSYT35_56 = 22 ;
+	PSXT191_108 = 18 ;
+	PSYT135_56 = 22 ;
 	bnds = 2 ;
-	PSZT1_10 = 10 ;
-	TIME1 = UNLIMITED ; // (1 currently)
+	PSZT11_10 = 10 ;
+	TIME11 = UNLIMITED ; // (1 currently)
 variables:
-	double PSXT91_108(PSXT91_108) ;
-		PSXT91_108:units = "meters" ;
-		PSXT91_108:modulo = 360. ;
-		PSXT91_108:point_spacing = "even" ;
-		PSXT91_108:axis = "X" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "meters" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_10(PSZT1_10) ;
-		PSZT1_10:units = "METERS" ;
-		PSZT1_10:positive = "down" ;
-		PSZT1_10:point_spacing = "uneven" ;
-		PSZT1_10:axis = "Z" ;
-		PSZT1_10:standard_name = "depth" ;
-		PSZT1_10:bounds = "PSZT1_10_bnds" ;
-	double PSZT1_10_bnds(PSZT1_10, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	double T2(TIME1, PSZT1_10, PSYT35_56, PSXT91_108) ;
+	double PSXT191_108(PSXT191_108) ;
+		PSXT191_108:units = "meters" ;
+		PSXT191_108:point_spacing = "even" ;
+		PSXT191_108:new_att = "something" ;
+		PSXT191_108:modulo = 360. ;
+		PSXT191_108:axis = "X" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "meters" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_10(PSZT11_10) ;
+		PSZT11_10:units = "meters" ;
+		PSZT11_10:positive = "down" ;
+		PSZT11_10:point_spacing = "uneven" ;
+		PSZT11_10:axis = "Z" ;
+		PSZT11_10:standard_name = "depth" ;
+		PSZT11_10:bounds = "PSZT11_10_bnds" ;
+	double PSZT11_10_bnds(PSZT11_10, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	double T2(TIME11, PSZT11_10, PSYT135_56, PSXT191_108) ;
 		T2:missing_value = -1.e+34 ;
 		T2:_FillValue = -1.e+34 ;
 		T2:long_name = "T*TEMP" ;
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -78804,8 +81481,8 @@ variables:
 		TEMP:units = "DEG C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -78838,8 +81515,8 @@ variables:
 		TWO:history = "From levitus_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 27 attributes of  user-defined axes
 netcdf string4d {
@@ -78868,8 +81545,8 @@ variables:
 		AXY:long_name = "RESHAPE (A,RVAR)" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 28 Define a new global attribute
 bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var
@@ -78897,8 +81574,8 @@ variables:
 		BROILED:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:glob = "Global attribute" ;
 		:FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ;
 data:
@@ -78918,39 +81595,39 @@ data:
 bn_attributes.jnl --- 29 SET VAR/OUTTYPE for user variable
 netcdf a {
 dimensions:
-	PSXT91_108 = 18 ;
-	PSYT35_56 = 22 ;
+	PSXT191_108 = 18 ;
+	PSYT135_56 = 22 ;
 	bnds = 2 ;
-	PSZT1_10 = 10 ;
-	TIME1 = UNLIMITED ; // (25 currently)
+	PSZT11_10 = 10 ;
+	TIME11 = UNLIMITED ; // (25 currently)
 variables:
-	double PSXT91_108(PSXT91_108) ;
-		PSXT91_108:units = "degrees_east" ;
-		PSXT91_108:modulo = 360. ;
-		PSXT91_108:point_spacing = "even" ;
-		PSXT91_108:axis = "X" ;
-		PSXT91_108:standard_name = "longitude" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "degrees_north" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:standard_name = "latitude" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_10(PSZT1_10) ;
-		PSZT1_10:units = "METERS" ;
-		PSZT1_10:positive = "down" ;
-		PSZT1_10:point_spacing = "uneven" ;
-		PSZT1_10:axis = "Z" ;
-		PSZT1_10:standard_name = "depth" ;
-		PSZT1_10:bounds = "PSZT1_10_bnds" ;
-	double PSZT1_10_bnds(PSZT1_10, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	double FAREN(TIME1, PSZT1_10, PSYT35_56, PSXT91_108) ;
+	double PSXT191_108(PSXT191_108) ;
+		PSXT191_108:units = "degrees_east" ;
+		PSXT191_108:point_spacing = "even" ;
+		PSXT191_108:modulo = 360. ;
+		PSXT191_108:axis = "X" ;
+		PSXT191_108:standard_name = "longitude" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "degrees_north" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:standard_name = "latitude" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_10(PSZT11_10) ;
+		PSZT11_10:units = "meters" ;
+		PSZT11_10:positive = "down" ;
+		PSZT11_10:point_spacing = "uneven" ;
+		PSZT11_10:axis = "Z" ;
+		PSZT11_10:standard_name = "depth" ;
+		PSZT11_10:bounds = "PSZT11_10_bnds" ;
+	double PSZT11_10_bnds(PSZT11_10, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	double FAREN(TIME11, PSZT11_10, PSYT135_56, PSXT191_108) ;
 		FAREN:missing_value = -1.e+34 ;
 		FAREN:_FillValue = -1.e+34 ;
 		FAREN:long_name = "TEMP*9/5 + 32" ;
@@ -78958,44 +81635,44 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	PSXT91_108 = 18 ;
-	PSYT35_56 = 22 ;
+	PSXT191_108 = 18 ;
+	PSYT135_56 = 22 ;
 	bnds = 2 ;
-	PSZT1_10 = 10 ;
-	TIME1 = UNLIMITED ; // (25 currently)
+	PSZT11_10 = 10 ;
+	TIME11 = UNLIMITED ; // (25 currently)
 variables:
-	double PSXT91_108(PSXT91_108) ;
-		PSXT91_108:units = "degrees_east" ;
-		PSXT91_108:modulo = 360. ;
-		PSXT91_108:point_spacing = "even" ;
-		PSXT91_108:axis = "X" ;
-		PSXT91_108:standard_name = "longitude" ;
-	double PSYT35_56(PSYT35_56) ;
-		PSYT35_56:units = "degrees_north" ;
-		PSYT35_56:point_spacing = "uneven" ;
-		PSYT35_56:axis = "Y" ;
-		PSYT35_56:standard_name = "latitude" ;
-		PSYT35_56:bounds = "PSYT35_56_bnds" ;
-	double PSYT35_56_bnds(PSYT35_56, bnds) ;
-	double PSZT1_10(PSZT1_10) ;
-		PSZT1_10:units = "METERS" ;
-		PSZT1_10:positive = "down" ;
-		PSZT1_10:point_spacing = "uneven" ;
-		PSZT1_10:axis = "Z" ;
-		PSZT1_10:standard_name = "depth" ;
-		PSZT1_10:bounds = "PSZT1_10_bnds" ;
-	double PSZT1_10_bnds(PSZT1_10, bnds) ;
-	double TIME1(TIME1) ;
-		TIME1:units = "hour since 1980-01-14 14:00:00" ;
-		TIME1:time_origin = "14-JAN-1980 14:00:00" ;
-		TIME1:axis = "T" ;
-		TIME1:standard_name = "time" ;
-	int FAREN(TIME1, PSZT1_10, PSYT35_56, PSXT91_108) ;
+	double PSXT191_108(PSXT191_108) ;
+		PSXT191_108:units = "degrees_east" ;
+		PSXT191_108:point_spacing = "even" ;
+		PSXT191_108:modulo = 360. ;
+		PSXT191_108:axis = "X" ;
+		PSXT191_108:standard_name = "longitude" ;
+	double PSYT135_56(PSYT135_56) ;
+		PSYT135_56:units = "degrees_north" ;
+		PSYT135_56:point_spacing = "uneven" ;
+		PSYT135_56:axis = "Y" ;
+		PSYT135_56:standard_name = "latitude" ;
+		PSYT135_56:bounds = "PSYT135_56_bnds" ;
+	double PSYT135_56_bnds(PSYT135_56, bnds) ;
+	double PSZT11_10(PSZT11_10) ;
+		PSZT11_10:units = "meters" ;
+		PSZT11_10:positive = "down" ;
+		PSZT11_10:point_spacing = "uneven" ;
+		PSZT11_10:axis = "Z" ;
+		PSZT11_10:standard_name = "depth" ;
+		PSZT11_10:bounds = "PSZT11_10_bnds" ;
+	double PSZT11_10_bnds(PSZT11_10, bnds) ;
+	double TIME11(TIME11) ;
+		TIME11:units = "hour since 1980-01-14 14:00:00" ;
+		TIME11:time_origin = "14-JAN-1980 14:00:00" ;
+		TIME11:axis = "T" ;
+		TIME11:standard_name = "time" ;
+	int FAREN(TIME11, PSZT11_10, PSYT135_56, PSXT191_108) ;
 		FAREN:missing_value = -999 ;
 		FAREN:_FillValue = -999 ;
 		FAREN:long_name = "TEMP*9/5 + 32" ;
@@ -79003,8 +81680,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79022,8 +81699,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79052,8 +81729,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79082,8 +81759,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79101,7 +81778,7 @@ dimensions:
 	XAX_LEV9421_380 = 360 ;
 	YAX_LEV9450_50 = 1 ;
 	ZAXLEVIT191_1 = 1 ;
-	TIME = UNLIMITED ; // (1 currently)
+	TIME3 = UNLIMITED ; // (1 currently)
 variables:
 	double XAX_LEV9421_380(XAX_LEV9421_380) ;
 		XAX_LEV9421_380:units = "degrees_east" ;
@@ -79121,13 +81798,13 @@ variables:
 		ZAXLEVIT191_1:point_spacing = "even" ;
 		ZAXLEVIT191_1:axis = "Z" ;
 		ZAXLEVIT191_1:standard_name = "depth" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float TEMP(TIME, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_380) ;
+	double TIME3(TIME3) ;
+		TIME3:units = "hour since 0000-01-01 00:00:00" ;
+		TIME3:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME3:modulo = " " ;
+		TIME3:axis = "T" ;
+		TIME3:standard_name = "time" ;
+	float TEMP(TIME3, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_380) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:long_name = "Temperature" ;
@@ -79135,15 +81812,15 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
 	XAX_LEV9421_3801_12 = 12 ;
 	YAX_LEV9450_50 = 1 ;
 	ZAXLEVIT191_1 = 1 ;
-	TIME = UNLIMITED ; // (1 currently)
+	TIME3 = UNLIMITED ; // (1 currently)
 variables:
 	double XAX_LEV9421_3801_12(XAX_LEV9421_3801_12) ;
 		XAX_LEV9421_3801_12:units = "degrees_east" ;
@@ -79163,13 +81840,13 @@ variables:
 		ZAXLEVIT191_1:point_spacing = "even" ;
 		ZAXLEVIT191_1:axis = "Z" ;
 		ZAXLEVIT191_1:standard_name = "depth" ;
-	double TIME(TIME) ;
-		TIME:units = "hour since 0000-01-01 00:00:00" ;
-		TIME:time_origin = "01-JAN-0000 00:00:00" ;
-		TIME:modulo = 8765.81982421875 ;
-		TIME:axis = "T" ;
-		TIME:standard_name = "time" ;
-	float TEMP(TIME, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_3801_12) ;
+	double TIME3(TIME3) ;
+		TIME3:units = "hour since 0000-01-01 00:00:00" ;
+		TIME3:time_origin = "01-JAN-0000 00:00:00" ;
+		TIME3:modulo = " " ;
+		TIME3:axis = "T" ;
+		TIME3:standard_name = "time" ;
+	float TEMP(TIME3, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_3801_12) ;
 		TEMP:missing_value = -1.e+34f ;
 		TEMP:_FillValue = -1.e+34f ;
 		TEMP:long_name = "Temperature" ;
@@ -79177,8 +81854,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79195,18 +81872,18 @@ variables:
 		V:long_name = "Y[GY=YAXIS]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 err611_set_var_ez.jnl --- 
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_ASC(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_ASC(AX138) ;
 		MY_ASC:missing_value = 3.f ;
 		MY_ASC:_FillValue = 3.f ;
 		MY_ASC:long_name = "chlorophyll" ;
@@ -79214,17 +81891,17 @@ variables:
 		MY_ASC:history = "From dat.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_UNF(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_UNF(AX138) ;
 		MY_UNF:missing_value = 5.f ;
 		MY_UNF:_FillValue = 5.f ;
 		MY_UNF:long_name = "Some Unformatted input" ;
@@ -79232,8 +81909,8 @@ variables:
 		MY_UNF:history = "From unf.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- SET VAR/OUTTYPE for user variable
 netcdf a {
@@ -79249,8 +81926,8 @@ variables:
 		A:long_name = "{1.1,2.2,3.3}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -79270,8 +81947,8 @@ variables:
 		A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
@@ -79312,6 +81989,7 @@ variables:
 		lat1_5:bounds = "lat1_5_bnds" ;
 	double lat1_5_bnds(lat1_5, bnds) ;
 	float zt(zt) ;
+		zt:long_name = "zt" ;
 		zt:units = "meters" ;
 		zt:positive = "down" ;
 		zt:point_spacing = "uneven" ;
@@ -79321,8 +81999,8 @@ variables:
 	float zt_bnds(zt, bnds) ;
 	double time1478(time1478) ;
 		time1478:calendar = "NOLEAP" ;
-		time1478:point_spacing = "even" ;
 		time1478:axis = "T" ;
+		time1478:point_spacing = "even" ;
 		time1478:standard_name = "time" ;
 	double newvar(time1478, zt, lat1_5, lon1_5) ;
 		newvar:missing_value = -999. ;
@@ -79332,8 +82010,8 @@ variables:
 		newvar:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- test SAVE/KEEP_AXISNAMES
 netcdf a {
@@ -79359,8 +82037,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES
 netcdf a {
@@ -79386,8 +82064,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, degrees_east, degrees_north, std names on axes:
 netcdf a {
@@ -79452,8 +82130,8 @@ variables:
 		ZUP:long_name = "Z[GZ=ZAXUP]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:
 netcdf a {
@@ -79484,8 +82162,8 @@ variables:
 		Y_:long_name_mod = "axis YFIFTEEN" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since
 netcdf a {
@@ -79517,8 +82195,8 @@ variables:
 		XYTVAR:history = "From bn_strides" ;
 
 // global attributes:
-		:history = "FERRET V6.861   17-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93   29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 -----
 end of ncdump output
@@ -79531,27 +82209,27 @@ yes?
 yes? 
 yes? GO bn_startupfile
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14
- 	17-Mar-14 15:55     
+ 	FERRET v6.93  
+ 	Linux 2.6.18-398.el5PAE 32-bit - 10/29/14
+ 	29-Oct-14 15:57     
 
 CAN MODE VERIFY
- Current size of FERRET memory cache: 31 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 31 MegaWords  (1 word = 8 bytes)
 PPL$XPIXEL = "656"
 PPL$YPIXEL = "492"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5PAE 32-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5PAE 32-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:50:21 $"
+NETCDF_VERSION = "4.3.3-rc2 of Oct  6 2014 16:16:52 $"
 FERRET_MEMORY = "31"
-SESSION_DATE = "17-Mar-14"
-SESSION_TIME = "15:55"
-SESSION_PID = "3996"
-DELTA_CPU = "0.027995"
-CLOCK_SECS = "0.348"
-CURRENT_DATE = "17-Mar-14"
-CURRENT_TIME = "15:55:05"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "15:57"
+SESSION_PID = "1762"
+DELTA_CPU = "0.036993"
+CLOCK_SECS = "0.328"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "15:57:39"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 LAST_GO_FILE = "./bn_startupfile.jnl"
@@ -79573,7 +82251,7 @@ PPL$VIEW_X = "0.000"
 PPL$VIEW_Y = "0.000"
 PPL$VIEW_Z = "0.000"
 PPL$COMMAND_FILE = "$$MEMBUF$$"
-WIN_TITLE = "17-Mar-14:15:55"
+WIN_TITLE = "29-Oct-14:15:57"
 VP_WIDTH = "10.2"
 VP_HEIGHT = "8.8"
 VP_SCALE = "1"
@@ -79635,9 +82313,9 @@ yes?
 yes? 
 yes? GO bn_gif
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14
- 	17-Mar-14 15:55     
+ 	FERRET v6.93  
+ 	Linux 2.6.18-398.el5PAE 32-bit - 10/29/14
+ 	29-Oct-14 15:57     
 
 ! bn450_gif.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of gif file in batch mode using
@@ -79698,7 +82376,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= .gif                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     [...]
@@ -79854,9 +82532,9 @@ yes?
 yes? 
 yes? GO bn_ps
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14
- 	17-Mar-14 15:55     
+ 	FERRET v6.93  
+ 	Linux 2.6.18-398.el5PAE 32-bit - 10/29/14
+ 	29-Oct-14 15:57     
 
 ! bn450_ps.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of ps files in batch mode using
@@ -79917,7 +82595,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.ps                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [...]
@@ -79968,9 +82646,9 @@ yes?
 yes? 
 yes? GO bn_batch_metafile
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5PAE 32-bit - 03/17/14
- 	17-Mar-14 15:55     
+ 	FERRET v6.93  
+ 	Linux 2.6.18-398.el5PAE 32-bit - 10/29/14
+ 	29-Oct-14 15:57     
 
 ! bn_batch_metafile.jnl
 ! Run at the end of the benchmark scripts, starting ferret with the flags
@@ -80054,4 +82732,4 @@ set window/location=0.1,0.1/title="another title"
  
 set mode/last logo
 exit/command
-Ended at Mon Mar 17 15:55:07 PDT 2014
+Ended at Wed Oct 29 15:57:41 PDT 2014
diff --git a/bench/ansley_official.rhel6-64_err b/bench/ansley_official.rhel6-64_err
index ee75936..e6331a5 100644
--- a/bench/ansley_official.rhel6-64_err
+++ b/bench/ansley_official.rhel6-64_err
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
-Running FERRET version /home/users/ansley/build/flat_64/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 53378727 Mar 28 11:22 /home/users/ansley/build/flat_64/FERRET/fer/ferret_c
-Using external functions from /home/users/ansley/build/flat_64/FERRET/external_functions/ext_func
+Running FERRET version /home/users/ansley/build/current_trunk/FERRET/fer/ferret_c
+-rwxr-xr-x. 1 manke oerdnewp 79254903 Oct 29 16:02 /home/users/ansley/build/current_trunk/FERRET/fer/ferret_c
+Using external functions from /home/users/ansley/build/current_trunk/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: ticket 2160: SET AXIS/NAME=
+Note: bug 2215
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -13,7 +13,7 @@ FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /hom
 FER_DESCR=.
 FER_DIR=.
 FER_DSETS=.
-FER_EXTERNAL_FUNCTIONS=/home/users/ansley/build/flat_64/FERRET/external_functions/ext_func
+FER_EXTERNAL_FUNCTIONS=/home/users/ansley/build/current_trunk/FERRET/external_functions/ext_func
 FER_FONTS=/home/users/tmap/ferret/rhel6-x86_64-linux/ppl/fonts
 FER_GO=. /home/users/tmap/ferret/rhel6-x86_64-linux/go /home/users/tmap/ferret/rhel6-x86_64-linux/examples /home/users/tmap/ferret/rhel6-x86_64-linux/contrib /home/users/tmap/ferret/tmap_go
 FER_GRIDS=.
@@ -21,12 +21,11 @@ FER_LIBS=/home/users/tmap/ferret/rhel6-x86_64-linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/rhel6-x86_64-linux/ppl
 FER_WEB_BROWSER=firefox
-PWD=/home/users/ansley/build/flat_64/FERRET/bench
-Beginning at Fri Mar 28 11:40:40 PDT 2014
+PWD=/home/users/ansley/build/current_trunk/FERRET/bench
+Beginning at Wed Oct 29 16:02:58 PDT 2014
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
         SET EXPRESSION has not been given or implied
-        SET EXPRESSION has not been given or implied
  **ERROR: unknown command qualifier: help
 MESSAGE/CONTINUE /help
  **ERROR: unknown command: that
@@ -306,7 +305,7 @@ list temp[i=2:5,gx=130e:80w:10]
 list temp[gx=130e:80w]
  **ERROR: variable unknown or not in data set: NOEXIST
 list temp[gx=u]	+ noexist
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list temp[gx=u,k=30]
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -322,7 +321,7 @@ list tu
 list tu
  **ERROR: variable unknown or not in data set: NOEXIST
 list tu
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list tu
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -582,9 +581,10 @@ Replacing definition of axis XAX
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
- **ERROR: request exceeds memory setting: A negative number of words were requested.
+ **ERROR: request exceeds memory setting: 24000 Mwords were requested.
 load num
- *** NOTE: The current grid is most likely too large
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
@@ -1085,7 +1085,7 @@ Replacing definition of axis TAX2
  *** NOTE: regarding ./test_axes.nc ...
  *** NOTE: Climatological axes test_irreg, test_seas defined
  *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: XEVEN
  *** NOTE: Axis is in use by grid EVEN
  *** NOTE: Not deleted: XODD
@@ -1190,18 +1190,18 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
  *** NOTE: Axis is in use by grid GG1
+ *** NOTE: Not deleted: TEST_IRREG
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: YAXLEVITR1_90
  *** NOTE: Axis is in use by grid GG2
- *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
  *** NOTE: Not deleted: ZAXLEVITR1_1
  *** NOTE: Axis is in use by grid GG2
  *** NOTE: Not deleted: (AX020)
@@ -1310,10 +1310,10 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
@@ -1681,15 +1681,15 @@ Replacing definition of grid TGRID
 def axis/t/cal=nogood/t=1-jan-2000:1-jan-2010:1/units=months tax
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: ZORRO
+ *** NOTE: Units  not recognized: zorro
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized for T axis: METERS
+ *** NOTE: Units  not recognized for T axis: meters
  *** NOTE: They will not be convertible
- *** NOTE: Units  not recognized for Y axis: SECONDS
+ *** NOTE: Units  not recognized for Y axis: seconds
  *** NOTE: They will not be convertible
 Replacing definition of axis TAX
 Replacing definition of axis XAX
@@ -3485,11 +3485,6 @@ Replacing definition of axis ZAX
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  LISTing to file append_to_this.nc
-ncks: WARNING Overwriting global attribute history
-ncks: WARNING Overwriting global attribute Conventions
-ncks: WARNING Overwriting attribute point_spacing for output variable ZAXIS_ORIG
-ncks: WARNING Overwriting attribute axis for output variable ZAXIS_ORIG
-ncks: WARNING Overwriting attribute standard_name for output variable ZAXIS_ORIG
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
 Replacing definition of axis XIRREG
@@ -3521,11 +3516,17 @@ Replacing definition of axis ZAX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
  **ERROR: illegal limits: X axis limits don't match variable def'n: A
           Are you giving explicit limits when SET REGION would suffice ?
 list f
- *** NOTE: Not deleted: ENSEMBLE
- *** NOTE: Axis is in use by grid (G103)
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3609,10 +3610,14 @@ show att temp.noexist[d=levitus_climatology]
  TEMPORARY data cleared from memory
  **ERROR: invalid command: illegal new name.  Variable b already defined
 set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
  **ERROR: invalid command: illegal new name.  Variable temp exists in dataset
 set var/name=temp salt
  **ERROR: invalid command: illegal new name.  Variable psi exists in dataset
 set var/name=psi myvar
+ **ERROR: invalid command: illegal new name.  Variable diff already defined
+set var/name=diff w
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another
@@ -3641,6 +3646,151 @@ set axis/name=.fr x_in_meters
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING
+list tax_datestring (tt[L=3], tt, 5)
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR
+ *** NOTE: Substituting coordinate midpoints
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: command syntax: must be a constant COS(1)
+list {cos(1), sin(0)}
+ **ERROR: command syntax: must be a constant 0-180
+list {0-180, 180}
+ **ERROR: command syntax: must be a constant  1./5.
+list {0.1, 0.2, 1./5.}
+ **ERROR: command syntax: must be a constant 5*3+1
+list {5*3+1, 2+3}
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis TAX
+ LISTing to file tval.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file out.xml
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis XAXIS
+ **ERROR: request exceeds memory setting: 2369 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+Replacing definition of axis LONGTIME
+ **ERROR: request exceeds memory setting: 4735 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ LISTing to file aa.nc
+ LISTing to file bb.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file anew_global.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file conventions_history.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis X2
+Replacing definition of axis Y2
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
+ **ERROR: illegal limits: X axis limits don't match variable def'n: A
+          Are you giving explicit limits when SET REGION would suffice ?
+list f
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.850
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.689E-02
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
  **ERROR: command syntax: unknown region name: @w
 set region/@w
  PERMANENT data cleared from memory
@@ -3728,4 +3878,4 @@ vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j
 Re-defining viewport LM6
 Re-defining viewport UM6
  *** NOTE: Cannot create new windows when batch mode set
-Ended at Fri Mar 28 11:42:11 PDT 2014
+Ended at Wed Oct 29 16:04:41 PDT 2014
diff --git a/bench/ansley_official.rhel6-64_log b/bench/ansley_official.rhel6-64_log
index b1f2cf4..f8289ca 100644
--- a/bench/ansley_official.rhel6-64_log
+++ b/bench/ansley_official.rhel6-64_log
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
-Running FERRET version /home/users/ansley/build/flat_64/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 53378727 Mar 28 11:22 /home/users/ansley/build/flat_64/FERRET/fer/ferret_c
-Using external functions from /home/users/ansley/build/flat_64/FERRET/external_functions/ext_func
+Running FERRET version /home/users/ansley/build/current_trunk/FERRET/fer/ferret_c
+-rwxr-xr-x. 1 manke oerdnewp 79254903 Oct 29 16:02 /home/users/ansley/build/current_trunk/FERRET/fer/ferret_c
+Using external functions from /home/users/ansley/build/current_trunk/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: ticket 2160: SET AXIS/NAME=
+Note: bug 2215
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -13,7 +13,7 @@ FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /hom
 FER_DESCR=.
 FER_DIR=.
 FER_DSETS=.
-FER_EXTERNAL_FUNCTIONS=/home/users/ansley/build/flat_64/FERRET/external_functions/ext_func
+FER_EXTERNAL_FUNCTIONS=/home/users/ansley/build/current_trunk/FERRET/external_functions/ext_func
 FER_FONTS=/home/users/tmap/ferret/rhel6-x86_64-linux/ppl/fonts
 FER_GO=. /home/users/tmap/ferret/rhel6-x86_64-linux/go /home/users/tmap/ferret/rhel6-x86_64-linux/examples /home/users/tmap/ferret/rhel6-x86_64-linux/contrib /home/users/tmap/ferret/tmap_go
 FER_GRIDS=.
@@ -21,8 +21,8 @@ FER_LIBS=/home/users/tmap/ferret/rhel6-x86_64-linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/rhel6-x86_64-linux/ppl
 FER_WEB_BROWSER=firefox
-PWD=/home/users/ansley/build/flat_64/FERRET/bench
-Beginning at Fri Mar 28 11:40:40 PDT 2014
+PWD=/home/users/ansley/build/current_trunk/FERRET/bench
+Beginning at Wed Oct 29 16:02:58 PDT 2014
 ! BN500_ALL.JNL
 ! - run all the benchmark tests
 ! - ordered (more or less) from least to most complex
@@ -275,9 +275,9 @@ SHOW DATA/FULL
     1> ./snoopy.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:2       ...       ...       ...       ...       ...
+               on grid (G008) with -1.E+34 for missing data
+             X=-0.5:1.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -287,7 +287,7 @@ SHOW DATA
      currently SET data sets:
     1> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:2       ...       ...       ...       ...       ...
  
 SET MODE IGNORE_ERROR
 SET DATA/EZ/VAR="P,Q" 1
@@ -529,7 +529,7 @@ show mode journal
       JOURNAL          SET         newjournal.jnl
 set mode journal ferret.jnl
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -541,7 +541,7 @@ ppl list plot
 ppl listsym
 cancel mode ppllist
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -598,6 +598,8 @@ set mode metafile metafile.plt
  
 ! SET - SHOW - CANCEL EXPRESSION
 SHOW EXPRESSION
+        current output expression(s):
+        X[GX=1:0:1]
 CANCEL EXPRESSION
 SHOW EXPRESSION
 SET EXPRESSION i+5,i-j
@@ -796,19 +798,19 @@ SHOW VARIABLES
  
 ! SHOW MEMORY , LOAD
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/TEMPORARY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded without /PERMANENT:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
   105  /125W          50  /1.7N           1  /10             5  /13-SEP-1982  ...  / ...         ...  / ...
  
 SHOW MEMORY/PERMANENT
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded with /PERMANENT:
 SHOW MEMORY/ALL
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 all data in memory:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
@@ -818,9 +820,9 @@ all data in memory:
 LET A=i
 LOAD/PERM/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -834,9 +836,9 @@ SHOW MEMORY/FREE
             number of blocks used /PERM: 1
 LOAD/TEMPORARY/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -1406,8 +1408,8 @@ let x1 = 0.012954
 let x2 = 7.5E-09
 let x3 = .1
 say >>`x1`<< ---  >>`x2`<< --- >>`x3`<<
- !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
->>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
+ !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
+>>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
  
 ! must recognize "/" inside immediate mode exprn
 list/I=`6/2` i
@@ -1748,8 +1750,8 @@ show data
  
     2> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- T4       test4                            1:20480   ...       ...       ...       ...       ...
- T3       test3                            1:20480   ...       ...       ...       ...       ...
+ T4       test4                            1:2       ...       ...       ...       ...       ...
+ T3       test3                            1:2       ...       ...       ...       ...       ...
  
 show data/full 1
      currently SET data sets:
@@ -9619,9 +9621,9 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ V1       V1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9649,12 +9651,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
+ X2       X2                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9685,12 +9687,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9729,12 +9731,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9767,12 +9769,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9802,12 +9804,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0))
  /SKIP = 2
@@ -9840,12 +9842,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0)/)
  /SKIP = 1
@@ -10089,7 +10091,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -10189,7 +10191,7 @@ plot/i=1:10/ylimits=1:40/nolabel i      ! note that /nolabel supresses XLAB
 plot/i=1:10/over/sym=2 i^1.1
 plot/i=1:10/over/sym=2/size=.12 i^1.2
 plot/i=1:10/over/sym=2/color=red i^1.3
-plot/i=1:10/over/thick/step i^1.4
+plot/i=1:10/over/thick/step/color=light_blue i^1.4
 plot/i=1:10/over/thick/color=blue/step=connected i^1.5
 plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6
  
@@ -10448,18 +10450,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.862"
-FERRET_PLATFORM = "Linux 2.6.32-431.5.1.el6.x86_64 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
-DELTA_CPU = "4.37933"
-CLOCK_SECS = "6.512"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:40:47"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
+DELTA_CPU = "4.44432"
+CLOCK_SECS = "7.074"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:03:05"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -10477,18 +10479,18 @@ show symbol/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.862"
-FERRET_PLATFORM = "Linux 2.6.32-431.5.1.el6.x86_64 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
-DELTA_CPU = "0.001"
-CLOCK_SECS = "6.513"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:40:47"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
+DELTA_CPU = "0"
+CLOCK_SECS = "7.074"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:03:05"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 S1 = "hello"
@@ -10498,9 +10500,9 @@ NUM = "3"
 T$DOLLAR = "hi"
 T_HELLO = "hi"
 show symbol s*
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
 S1 = "hello"
 S2 = ""hello""
 S3 = "hello and goodbye"
@@ -10510,15 +10512,15 @@ S2 = ""hello""
 ! exercise CANCEL SYMBOL
 cancel symbol s2
 show symbol s*
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
 S1 = "hello"
 S3 = "hello and goodbye"
 show symbol S*
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
 S1 = "hello"
 S3 = "hello and goodbye"
 cancel symbol s2	! already deleted
@@ -10552,9 +10554,9 @@ Q23456789012345678901234567XXXAAAAA = "6"
 ! show the upper left coordinate limits labels as symbols
 plot/i=1:100/y=10/z=5/set_up SIN(I/6)+Y+Z
 show symbol lab*
-LAB1 = "FERRET Ver. 6.862"
+LAB1 = "FERRET (beta) Ver.6.93"
 LAB2 = "NOAA/PMEL TMAP"
-LAB3 = "28-MAR-2014 11:40:47"
+LAB3 = "29-OCT-2014 16:03:05"
 LABX = "X"
 LAB4 = "Y : 10"
 LABNUM_Y = "4"
@@ -10649,18 +10651,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.862"
-FERRET_PLATFORM = "Linux 2.6.32-431.5.1.el6.x86_64 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-SESSION_PID = "30596"
-DELTA_CPU = "0.008999"
-CLOCK_SECS = "6.522"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:40:47"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+SESSION_PID = "1700"
+DELTA_CPU = "0.007999"
+CLOCK_SECS = "7.082"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:03:05"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -12355,7 +12357,7 @@ set region/l=1/k=1/i=101:105/j=46:50
 load temp[gx=u]
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12406,7 +12408,7 @@ Dynamic axes:
 list temp[gx=u,k=20]		! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12450,7 +12452,7 @@ list temp[gx=a]			! uvar for grid name
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12497,7 +12499,7 @@ let  tu = temp[gx=u,k=20]
 list tu				! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12528,7 +12530,7 @@ set mem/siz = 10
 list temp[gz=z999999,z=5:15]	! err during regrid
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12544,7 +12546,7 @@ set mem/siz=`save_mem`
 shade 1/0 * temp[gx=u]		! err during plot
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12576,7 +12578,7 @@ list temp[gx=psxu]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12618,7 +12620,7 @@ list temp[gx=u]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12658,7 +12660,7 @@ list  temp[gx=psxu] + 5
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12684,7 +12686,7 @@ list  5 + temp[gx=psxu]
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12711,7 +12713,7 @@ list tu
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12722,7 +12724,7 @@ Dynamic grids:
 Dynamic axes:
     no implicit axes
 show grid tu
-    GRID (G003)
+    GRID (G004)
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12747,7 +12749,7 @@ list tu
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12826,7 +12828,7 @@ list temp[gx=taux]		! X only
  0.17S / 45:  27.8727  27.7878  27.7232  27.6494  27.5563  27.4494
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12937,7 +12939,7 @@ Dynamic axes:
 ! * * * dynamic generation of pseudo-variables * * *
 list x[x=.1:1:.1]			! dynamic abstract
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              SUBSET   : 10 points (X)
  0.1  /  1:  0.10000
  0.2  /  2:  0.20000
@@ -12951,7 +12953,7 @@ list x[x=.1:1:.1]			! dynamic abstract
  1    / 10:  1.00000
 list x[gx=psxu,x=130:150:2.5]		! dynamic based on named axis
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 9 points (LONGITUDE)
  130E   / 1:  130.000
  132.5E / 2:  132.500
@@ -13038,24 +13040,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX004)   Y                    3 r   95                   109
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   Y                    3 r   95                   109
  normal    Z
  normal    T
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX003)   Y                   10 r   101                  110
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX005)   Y                   10 r   101                  110
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   2
     AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   2
+    AXIS (AX005)                         use count:   1
  
 ! ambiguous coordinate tests
 list/order=x  x[x=0.1:10:1.5] +  x[x=1.1:11:1.5]
@@ -13073,16 +13075,16 @@ list/order=x a
            1.2000   4.2000   7.2000  10.2000  13.2000  16.2000  19.2000
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
- (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   X                    7 r   0.1                  9.1
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
+    AXIS (AX003)                         use count:   1
  
 ! box size on dynamic axes
 cancel region
@@ -13106,10 +13108,10 @@ let/quiet b = a[i=1:10:2]
 load b     ! "child" irregular axis
 show grid/x
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G003)
-    GRID (G003)
+ Last successful data access was on grid (G004)
+    GRID (G004)
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
@@ -13141,7 +13143,7 @@ list/i=1:10 x[gx=temp]			! from named variable
  139.5E / 10:  139.500
 list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX005)
+                        axis (AX001)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13155,7 +13157,7 @@ list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
  130W   / 9:  230.000
 list x[gx=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13183,16 +13185,16 @@ list/i=101:105/j=46:50/l=1/k=1 temp+x	! grid inherited from expression
  0.17N / 46:  254.456  255.346  256.243  257.163  258.142
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! this expression does NOT inherit the X axis -- the result is
 !	i) ambiguous X axis coordinates
@@ -13214,23 +13216,23 @@ show grid/dynamic
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            5 r   129.5W               113.5W
+ (AX003)   LONGITUDE            5 r   129.5W               113.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 list/j=46:50/l=1/k=1 temp[i=101:120:4]+x[g=temp,i=101:120:4]
              VARIABLE : TEMP[I=101:120:4]+X[G=TEMP,I=101:120:4]
@@ -13253,7 +13255,7 @@ SET REGION/I=101:105/J=46:50/l=1/k=1
 ! deliberate errors:  ****
 list x[i=5:1:1]		! not an error: inverted order
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 5 points (X)
  1   / 1:  1.00000
  2   / 2:  2.00000
@@ -13298,23 +13300,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
+ (AX003)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! regular dynamic axis
 ! ... by subscript
@@ -13382,22 +13384,22 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX004)   LATITUDE             4 r   0.5S                 4N
+ (AX003)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! ========
 ! 2/96: repeat the very same commands using GX=lo:hi:delta notation
@@ -13559,24 +13561,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
- (AX003)   LATITUDE             4 r   0.5S                 4N
+ (AX001)   LONGITUDE            4 r   130W                 121W
+ (AX005)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! the same tests but now on a nested definition
 ! regular dynamic axis
@@ -13744,23 +13746,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            6 r   138W                 113W
+ (AX005)   LONGITUDE            6 r   138W                 113W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
+ (AX001)   LONGITUDE            4 r   130W                 121W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
  
 ! irregular dynamic axis
 ! ... by subscript
@@ -13898,23 +13900,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            8 r   90W                  62W
+ (AX001)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX002)   LATITUDE             6 r   3.5S                 4N
+ (AX004)   LATITUDE             6 r   3.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! nested modulo (the dynamic axis is **NOT** modulo)
 ! ... by subscript
@@ -14096,23 +14098,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   LONGITUDE            9 r   101W                 53W
+ (AX004)   LONGITUDE            9 r   101W                 53W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            8 r   90W                  62W
+ (AX005)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
-    AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   1
+    AXIS (AX005)                         use count:   1
  
 ! calendar axes
 list/k=1/y=0/x=180 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]   ! 6-day ave
@@ -14144,7 +14146,7 @@ list/k=1/y=0/x=180/l=1 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]
 list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:`24*2`]			! pseudo-var
  !-> list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:48]			! pseudo-var
              VARIABLE : T
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 3 points (TIME)
  15-JAN-1982 00 / 1:  723925.
  17-JAN-1982 00 / 2:  723927.
@@ -14756,7 +14758,7 @@ show data/full
                on grid G016_NYZ with -1.E+34 for missing data
              X=130E:140E  
  JK       J1+K1                            ...       5:10      5:15      ...       ...       ...
-               on grid G007_NXT with -1.E+34 for missing data
+               on grid G008_NXT with -1.E+34 for missing data
              Y=21.11S:12.52S  Z=40:190  
  IJK      TEMP[L=@AVE]                    70:72      1:100     1:27      ...       ...       ...
        (T=15-MAR-1983 09:30:15-MAR-1983 11:30)
@@ -17828,10 +17830,10 @@ list a2[gx=xoffset at ave, gy=yoffset at ave]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17864,10 +17866,10 @@ list a2[gx=xoffset at sum, gy=yoffset at sum] ! should sum to 10+11+11+12=44
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:298 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17901,10 +17903,10 @@ list a2[gx=xoffset at var, gy=yoffset at var]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -18102,18 +18104,18 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- strip regrid on X: A5 --> (G008)           @MAX
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ strip regrid on X: A5 --> (G002)           @MAX
  eval    A5       C:  7 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : X[GX=X5_EDGES]
                         regrid: 1 delta on X at MAX
              SUBSET   : 5 points (X)
@@ -18123,7 +18125,7 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  4   / 4:  3.50000
  5   / 5:  5.50000
 let a5 = x[gx=x5_edges, i=3]
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A5       M:299 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -25630,7 +25632,7 @@ GO err491_spawn_quotes.jnl
  
 ! this should be a valid command
 SPAWN "date"
-Fri Mar 28 11:40:54 PDT 2014
+Wed Oct 29 16:03:12 PDT 2014
  
 GO bn_reset
 cancel mode verify
@@ -25757,7 +25759,7 @@ list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50})
  1N   / 46:  29.1373  28.9243  28.3264
  1S   / 45:  28.8965  28.8240  28.5357
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -26254,7 +26256,7 @@ Dynamic grids:
     GRID (G017)                          use count:   2
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26262,13 +26264,13 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX001)                         use count:   2
+    AXIS (AX002)                         use count:   2
 cancel memory/all
 let/quiet a = sst[l=1,y=1s:1n:.5]
 list SAMPLEI(a,{30,40,50})
@@ -26288,7 +26290,7 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26296,13 +26298,13 @@ Dynamic grids:
     GRID (G017)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   2
+    AXIS (AX001)                         use count:   2
  
 ! sampling a pseudo-variable
 list SAMPLEI(X[x=1:12],{3,4,7,15})
@@ -26459,9 +26461,9 @@ list SAMPLEI(Y[y=110:200:10],{3,4,7})
 cancel memory/all
 set mode diagnostic
 list SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48})
- dealloc  dynamic grid (G017)          NORMAL    (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G017)          NORMAL    (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C01,V02 C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C09,V02 C: 10 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -26564,7 +26566,7 @@ list a 			!   <-- CACHE HIT FAILS!!!
 set mode/last diagnostic
  
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -29159,15 +29161,15 @@ stat $1[gx=xtrop]
  !-> stat sst[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 52 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29186,7 +29188,7 @@ stat $1[gx=xtrop]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29199,15 +29201,15 @@ stat $1[gx=xtrop]
  -DELETE I        M: 49 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 49 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29230,21 +29232,21 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sstx = sst[gx=xtrop]
 stat $1x
  !-> stat sstx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SSTX     C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 27 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29262,7 +29264,7 @@ stat $1x
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -29274,14 +29276,14 @@ stat $1x
  -DELETE I        M: 44 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 44 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29300,24 +29302,24 @@ stat $1x
  Standard deviation: 9.8848
  
 define grid/x=xtrop gx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SSTX     M: 40 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SSTX     M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
 stat $1[g=gx]
  !-> stat sst[g=gx]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 47 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29336,7 +29338,7 @@ stat $1[g=gx]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29349,15 +29351,15 @@ stat $1[g=gx]
  -DELETE I        M: 43 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 43 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29379,19 +29381,19 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 46 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29410,7 +29412,7 @@ stat $1[gx=xtrop,gy=ytrop]
  Mean    value: 26.908 (unweighted average)
  Standard deviation: 1.778
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29423,16 +29425,16 @@ stat $1[gx=xtrop,gy=ytrop]
  -DELETE I        M: 40 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 40 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29453,7 +29455,7 @@ stat $1[gx=xtrop,gy=ytrop]
  
 define grid/like=$1/x=xtrop/y=ytrop gxyt
  !-> define grid/like=sst/x=xtrop/y=ytrop gxyt
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
@@ -29991,18 +29993,18 @@ stat $1[gx=xtrop]
  !-> stat sst5[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 50 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30021,7 +30023,7 @@ stat $1[gx=xtrop]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -30034,18 +30036,18 @@ stat $1[gx=xtrop]
  -DELETE I        M: 42 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 42 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30068,24 +30070,24 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sst5x = sst5[gx=xtrop]
 stat $1x
  !-> stat sst5x
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SST5X    C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 45 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30103,7 +30105,7 @@ stat $1x
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30115,17 +30117,17 @@ stat $1x
  -DELETE I        M: 61 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 61 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30146,20 +30148,20 @@ stat $1x
 define grid/x=xtrop gx
 stat $1[g=gx]
  !-> stat sst5[g=gx]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 65 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30178,7 +30180,7 @@ stat $1[g=gx]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30190,18 +30192,18 @@ stat $1[g=gx]
  -DELETE I        M: 68 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 68 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 69 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30223,7 +30225,7 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst5[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  strip regrid on X: SST5 --> GXYT             @LIN
@@ -30441,7 +30443,7 @@ let $1xyt = $1[g=gxyt]
  dealloc  dynamic grid GXYT            XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5X    M: 60 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5X    M: 64 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31042,7 +31044,7 @@ say `a,return=isize`
  getgrid (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31166,7 +31168,7 @@ cancel mode verify
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C09,V11 M: 79 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C09,V11 M: 90 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C01,V11 M: 84 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C01,V11 M: 93 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -31390,7 +31392,7 @@ show grid
     GRID (G012)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31400,7 +31402,7 @@ Dynamic grids:
     GRID (G012)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31414,7 +31416,7 @@ Dynamic grids:
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
     AXIS (AX012)                         use count:   1
     AXIS (AX020)                         use count:   1
  
@@ -31534,7 +31536,7 @@ SHOW GRID temp[d=2,gx=sst[d=1],y=10s:2s:.2]             ! implicit Y axis
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31543,7 +31545,7 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5"
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31552,7 +31554,7 @@ SHOW GRID FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]) ! imposed T axis
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
@@ -31561,7 +31563,7 @@ SHOW GRID SORTI(temp[d=2,gx=sst[d=1],y=10s:2s:.2])      ! abstract X axis
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31578,15 +31580,15 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5",FFTA(sst[d=1,gx=temp[d=2],y=10
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
- (AX005)   T (CYC/hour)         2 r   0.00034224           0.00068448
+ (AX001)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31599,7 +31601,7 @@ SHOW GRID
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31611,14 +31613,14 @@ SHOW GRID
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 list/j=1:5 j
              VARIABLE : J
-                        axis (AX002)
+                        axis (AX004)
              SUBSET   : 5 points (LATITUDE)
  9.2S   / 5:  5.00000
  9.4S   / 4:  4.00000
@@ -31630,7 +31632,7 @@ SHOW GRID MYGRID
     GRID MYGRID
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31640,14 +31642,14 @@ Dynamic grids:
     GRID (G011)                          use count:   1
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 Dynamic axes:
     AXIS (AX011)                         use count:   1
-    AXIS (AX002)                         use count:   2
+    AXIS (AX004)                         use count:   2
     AXIS (AX020)                         use count:   1
  
  
@@ -34178,6 +34180,10 @@ SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
     XPTS: X values of sample points
     YPTS: Y values of sample points
     TPTS: T values of sample points
+SAMPLE_FAST_I(V,Indices)
+    Fast 1D sample variable using set of indices
+    V: Variable to sample
+    Indices: List of indices at which to sample
  
 go bench_sorti.jnl
  
@@ -36867,56 +36873,56 @@ show data/var
     1> ./bn_delimited_read_1.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V2       V2                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V3       V3                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V4       V4                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V5       V5                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V6       V6                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V7       V7                               1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V8       V8                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V9       V9                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V10      V10                              1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
  
  /DELIMITERS="\t,\,"
 list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
@@ -37015,11 +37021,11 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_1.dat  (default)
  name     title                             I         J         K         L         M         N
- A1       A1                               1:20480   ...       ...       ...       ...       ...
- A2       A2                               1:20480   ...       ...       ...       ...       ...
- A3       A3                               1:20480   ...       ...       ...       ...       ...
- A4       A4                               1:20480   ...       ...       ...       ...       ...
- A5       A5                               1:20480   ...       ...       ...       ...       ...
+ A1       A1                               1:7       ...       ...       ...       ...       ...
+ A2       A2                               1:7       ...       ...       ...       ...       ...
+ A3       A3                               1:7       ...       ...       ...       ...       ...
+ A4       A4                               1:7       ...       ...       ...       ...       ...
+ A5       A5                               1:7       ...       ...       ...       ...       ...
  
 list a1,a2,a3,a4,a5
              DATA SET: ./bn_delimited_read_1.dat
@@ -37127,18 +37133,18 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
  
 file/form=delimited/delimiter=" " bn_delimited_read_2.dat
 show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+ V2       V2                               1:3       ...       ...       ...       ...       ...
        (Time of day)
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+ V3       V3                               1:3       ...       ...       ...       ...       ...
        (all values missing)
  
 list v1,v2
@@ -37439,367 +37445,367 @@ show data/full
     1> ./bn_delimited_read_CO2.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V2       V2                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V3       V3                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V4       V4                               1:20      ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
             Data type = NUMERIC
             Conversion /TYPE=DATE
-             days on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+             days on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V5       V5                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V6       V6                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V7       V7                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V8       V8                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V9       V9                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V10      V10                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V11      V11                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V11      V11                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V12      V12                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V12      V12                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V13      V13                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V13      V13                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V14      V14                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V14      V14                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V15      V15                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V15      V15                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V16      V16                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V16      V16                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V17      V17                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V17      V17                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V18      V18                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V18      V18                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V19      V19                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V19      V19                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V20      V20                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V20      V20                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V21      V21                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V21      V21                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V22      V22                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V22      V22                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V23      V23                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V23      V23                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V24      V24                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V24      V24                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V25      V25                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V25      V25                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V26      V26                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V26      V26                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V27      V27                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V27      V27                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V28      V28                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V28      V28                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V29      V29                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V29      V29                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V30      V30                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V30      V30                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V31      V31                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V31      V31                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V32      V32                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V32      V32                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V33      V33                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V33      V33                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V34      V34                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V34      V34                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V35      V35                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V35      V35                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V36      V36                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V36      V36                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V37      V37                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V37      V37                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V38      V38                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V38      V38                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V39      V39                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V39      V39                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V40      V40                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V40      V40                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V41      V41                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V41      V41                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V42      V42                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V42      V42                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V43      V43                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V43      V43                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V44      V44                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V44      V44                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V45      V45                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V45      V45                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V46      V46                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V46      V46                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V47      V47                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V47      V47                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V48      V48                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V48      V48                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V49      V49                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V49      V49                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V50      V50                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V50      V50                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V51      V51                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V51      V51                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V52      V52                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V52      V52                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V53      V53                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V53      V53                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V54      V54                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V54      V54                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V55      V55                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V55      V55                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V56      V56                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V56      V56                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V57      V57                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V57      V57                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V58      V58                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V58      V58                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V59      V59                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V59      V59                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V60      V60                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V60      V60                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V61      V61                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V61      V61                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V62      V62                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V62      V62                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V63      V63                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V63      V63                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V64      V64                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V64      V64                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V65      V65                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V65      V65                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V66      V66                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V66      V66                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V67      V67                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V67      V67                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V68      V68                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V68      V68                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V69      V69                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V69      V69                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V70      V70                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V70      V70                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V71      V71                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V71      V71                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V72      V72                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V72      V72                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
  
  /DELIMITERS="\t,\,"
  /FORMAT = DELIMITED
@@ -38343,7 +38349,7 @@ set mode stupid
 set mode diag
 set mem/size=0.05
 show mem/free
- Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 100
@@ -38357,11 +38363,11 @@ show mem/free
 use/ord=x-y test_100x100.nc
 list/prec=1 a[i=1:100:10] !  this looks just right!!
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38369,7 +38375,7 @@ list/prec=1 a[i=1:100:10] !  this looks just right!!
  -DELETE A        M:  1 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  1 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : IF I EQ J THEN 1 ELSE A0
                         regrid: 10 delta on X
              FILENAME : test_100x100.nc
@@ -38481,7 +38487,7 @@ show grid
  Last successful data access was on grid (G005)
     GRID (G005)
  name       axis              # pts   start                end
- (AX010)   X                   10 r   1                    91
+ (AX017)   X                   10 r   1                    91
  YAX1_100  Y                  100 r   1                    100
  normal    Z
  normal    T
@@ -38491,7 +38497,7 @@ show grid
 ! should be a diagonal path of steps all the way across the plot
 shade a[i=1:100:10]
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38499,7 +38505,7 @@ shade a[i=1:100:10]
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  2 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  3 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
 setting up 2D plot
  -DELETE A        M:  3 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
 PPL plot 279  complete
@@ -38810,8 +38816,11 @@ save/q/clob/file=g.nc b
 can var a b
  
 sp ncrename -h -v A,a f.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 1 variable
 sp ncrename -h -v A,a -v B,b f2.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 2 variables
 sp ncrename -h -v B,b g.nc
+ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 1 variable
 use f.nc
 use f2.nc
 use g.nc
@@ -39938,37 +39947,37 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ3            XAX_SUBSPANORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- strip regrid on X: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ strip regrid on X: V2D_REG --> (G002)           @XACT
  found   V2D_REG  M: 69 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_REG  M: 70 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  13.0000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_reg[i=1,l=1:15:2]
- dealloc  dynamic grid (G008)          (AX017)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- strip regrid on T: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ strip regrid on T: V2D_REG --> (G002)           @XACT
  strip moduloing V2D_REG on T axis:     1    15 dset:   1
  rdstride V2D_REG  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  doing moduloing V2D_REG on T axis:     1     5 dset:   1
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_REG  M: 72 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  16-MAR-0000 / 2:   71.000
  15-MAY-0000 / 3:  131.000
@@ -40467,29 +40476,29 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ4            XIRREG_SUBNORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  strip regrid on X: V2D_IRR --> (G018)           @XACT
  found   V2D_IRR  M:146 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_IRR  M:147 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  12.1000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_irr[i=1,l=1:15:2]
- dealloc  dynamic grid (G018)          (AX010)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  strip regrid on T: V2D_IRR --> (G018)           @XACT
  strip moduloing V2D_IRR on T axis:     1    15 dset:   1
  rdstride V2D_IRR  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
@@ -40497,7 +40506,7 @@ set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_IRR  M:149 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  15-MAR-0000 / 2:   70.249
  15-MAY-0000 / 3:  131.249
@@ -44835,52 +44844,52 @@ let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:146 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 can mem/all
  -DELETE A        M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  
 def grid/like=taux agrid
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
 set mode diag
 let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
  dealloc  dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 can mem/all
  -DELETE TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE A        M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
 can data/all
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 ! Some tests taken from  bn_strides_revs_perms.jnl but with
 ! DEFINE GRID/LIKE= testing permuting and reversing axes
@@ -44948,16 +44957,16 @@ LIST VAR[i=2:4:2,j=1:3:2]
  dealloc  dynamic grid (G014)          (AX040)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    2    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:146 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -44978,19 +44987,19 @@ CANC MEM/ALL
 ! modulo requests cannot use strides (as this example shows)
 set axis/modulo XAX1_4
 LIST VAR[I=1:10:3,j=1,k=1,l=1]    ! 1, 4, 7(3), 10(2)
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  strip moduloing VAR on X axis:     1    10 dset:   1
  reading VAR      M:151 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  doing moduloing VAR on X axis:     1     4 dset:   1
  regrid  VAR      M:147 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 3 delta on X
              FILENAME : bn_strides.cdf
@@ -45011,7 +45020,7 @@ cancel axis/modulo XAX1_4
  
 ! strides applied to more than one axis need special attention in IS_REGRID
 LIST VAR[i=2:4:2,j=1:3:2]
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
@@ -45040,16 +45049,16 @@ LIST VAR[i=2:6:2,j=1:5:2]
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -45066,7 +45075,7 @@ LIST VAR[i=2:6:2,j=1:5:2]
  
 ! test sub-region selection on strides axis
 let a = bigvar[i=1:40:5]
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
 list/j=1/k=1/l=1 a[i=3:5]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -45141,17 +45150,17 @@ cancel mem/all
 LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2]
  dealloc  dynamic grid (G001)          (AX041)   (AX040)   ZAX1_20   TAX1_10   NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   1 I:    3    6  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip regrid on X: UNEVENVAR --> (G001)           @XACT
  rdstride UNE-NVAR C:  8 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE UNE-NVAR M:151 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN]
                         regrid: on X
              FILENAME : bn_strides.cdf
@@ -45169,7 +45178,7 @@ set region/i=3:6/j=2:4/k=1:2/l=1
  
 use/order=yx bn_strides
 list bigvar[i=3:9:2, j=2:6:2, k=1:3:2]
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  -DELETE UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G001)          (AX040)   (AX042)   (AX043)   TAX1_10   NORMAL    NORMAL
@@ -46533,7 +46542,7 @@ set axis/units=feet `temp,return=zaxis`
 show axis `temp,return=zaxis`
  !-> show axis PSZT
  name       axis              # pts   start                end
- PSZT      Z (FEET)            27 i-  5                    3824
+ PSZT      Z (feet)            27 i-  5                    3824
    Axis span (to cell edges) = 4149
  
 ! unrecognized units
@@ -46542,7 +46551,7 @@ set axis/units="something" `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon
@@ -46559,7 +46568,7 @@ set axis/units=something `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon using word DEG
@@ -46579,7 +46588,7 @@ list/x=130w/y=1/k=1/L=1:5 temp
              SUBSET   : 5 points (TIME)
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                        130.5W  
                        100
  17-AUG-1982 12 / 1:  25.9777
@@ -46594,9 +46603,9 @@ set axis/units=meters `temp,return=yaxis`
 list/x=222/k=1/l=1/y=-0.5:0.5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 4 points (Y (METERS))
+             SUBSET   : 4 points (Y (meters))
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46617,7 +46626,7 @@ list/x=222/k=1/l=1/y=-0.5:0.5 temp
              FILENAME : gt4d011.cdf
              SUBSET   : 4 points (LATITUDE)
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46632,10 +46641,10 @@ set axis/units=meters `temp,return=taxis`
 list/x=130w/y=1/k=1/l=1:5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 5 points (T (METERS))
+             SUBSET   : 5 points (T (meters))
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                 130.5W  
                 100
  22702   / 1:  25.9777
@@ -46650,9 +46659,9 @@ show grid temp
     GRID PS3DT2
  name       axis              # pts   start                end
  PSXT1     LONGITUDE          160mr   130.5E               70.5W
- PSYT      Y (SECONDS)        100 i   -28.836              48.568
- PSZT      Z (ZORRO)           27 i-  5                    3824
- TIME11    T (METERS)          25 r   22702                26206
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+ PSZT      Z (zorro)           27 i-  5                    3824
+ TIME11    T (meters)          25 r   22702                26206
  normal    E
  normal    F
  
@@ -48301,11 +48310,11 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET Ver. 6.862
+ LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET (beta) Ver.6.93
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 2  8.000E+00  7.100E+00 0.060    0  SYSTEM  @ASNOAA/PMEL TMAP
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
- LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS28-MAR-2014 11:41:22
+ LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS29-OCT-2014 16:03:42
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 4  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLONGITUDE : 179E
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
@@ -49421,11 +49430,11 @@ let the_data_var = {4,5,4}
  
 list/format=comma country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
      COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR
 1   / 1:"JP",1,4000,1000500,"w",4  
@@ -49434,11 +49443,11 @@ list/format=comma country, id, aa, bb, newcountry, the_data_var
  
 list/format=tab/norow country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
 COUNTRY	ID	AA	BB	NEWCOUNTRY	THE_DATA_VAR
 "JP"	1	4000	1000500	"w"	4  
@@ -49582,7 +49591,7 @@ GO bn_long_revision_num.jnl
  
 ! ferret version
 sh sym FERRET_VERSION
-FERRET_VERSION = "6.862"
+FERRET_VERSION = "6.93"
  
 ! history attribute
 let a = 12
@@ -49600,7 +49609,7 @@ LAB1 = "X : 0.5 to 314.5"
  
 ! show commands without an argument, lists version number at the top
 sho command
- Commands in Program FERRET   version6.862:
+ Commands in Program FERRET (beta) version6.93:
  SET
  SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE
  SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN
@@ -49736,7 +49745,7 @@ go ptest
 PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20)
  
 sh sym win_title
-WIN_TITLE = "28-Mar-14:11:40"
+WIN_TITLE = "29-Oct-14:16:02"
  
 set win/title="set the title"
 sho sym win_title
@@ -49754,7 +49763,7 @@ sho sym win_title
 WIN_TITLE = "_"
  
 set win/title="($session_date):($session_time)"
- !-> set win/title="28-Mar-14:11:40"
+ !-> set win/title="29-Oct-14:16:02"
  
 ! If the date or time starts with a blank then we get an extra
 ! underscore in the window title. Evaluating the symbols into
@@ -49763,16 +49772,16 @@ set win/title="($session_date):($session_time)"
 ! If so substitute another string.
  
 DEFINE SYMBOL the_date = ($session_date"SESSION_DATE")
- !-> DEFINE SYMBOL the_date = 28-Mar-14
+ !-> DEFINE SYMBOL the_date = 29-Oct-14
 DEFINE SYMBOL the_time = ($session_time"SESSION_TIME")
- !-> DEFINE SYMBOL the_time = 11:40
+ !-> DEFINE SYMBOL the_time = 16:02
 SET WIN/TITLE="($the_date):($the_time)"
- !-> SET WIN/TITLE="28-Mar-14:11:40"
+ !-> SET WIN/TITLE="29-Oct-14:16:02"
  
 can win/all
 set win/new
 sh sym win_title
-WIN_TITLE = "28-Mar-14:11:40"
+WIN_TITLE = "29-Oct-14:16:02"
  
 GO bn_reset
 cancel mode verify
@@ -54074,8 +54083,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54119,8 +54128,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54511,12 +54520,12 @@ use coads_climatology
 set axis/stride=6/offset=5 `sst,return=xaxis`
  !-> set axis/stride=6/offset=5 COADSX
 show axis `sst,return=xaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LONGITUDE           30mr   31E                  19E(379)
+ (AX009)   LONGITUDE           30mr   31E                  19E(379)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 cancel axis/stride `sst,return=xaxis`
- !-> cancel axis/stride (AX005)
+ !-> cancel axis/stride (AX009)
  
 !--- 8.2 stride value is not an integer factor of the axis length
 ! warning: it may lose modulo property
@@ -54740,9 +54749,9 @@ show axis `sst,return=xaxis`
  (AX051)   LONGITUDE           90mr   21E                  17E(377)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 show axis `sst,return=yaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LATITUDE            45 r   89S                  87N
+ (AX009)   LATITUDE            45 r   89S                  87N
    Axis span (to cell edges) = 180
 show axis `sst,return=taxis`
  !-> show axis (AX048)
@@ -55470,7 +55479,7 @@ set mem/siz=90
 sh sym ferret_memory
 FERRET_MEMORY = "90"
 show memory
- Current size of FERRET memory cache: 90 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 90 MegaWords  (1 word = 8 bytes)
  
 set mem/size=0.05
 sh sym ferret_memory
@@ -55482,7 +55491,7 @@ FERRET_MEMORY = "0.2"
  
 set mem/siz=25.6  ! return to the default setting
 show memory
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
  
 GO bn_reset
 cancel mode verify
@@ -55744,23 +55753,38 @@ EXPND_BY_LEN_STR(var,len,nx)
 FC_ISUBSET(index_list,lengths,nx,FullData)
 EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len)
 EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EXPNDI_BY_M_COUNTS(dat,counts,max_row_len)
 STR_MASK(STRING,MASK,--)
 SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
+SEPARATE(A,Rowsize,FixLongitudes)
 ADD_9(A,B,C,D,E,F,G,H,I)
 APPENDE(ENS,VAR)
 AVET(A)
 DATES(Offsets)
-EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EFSTRINGS(--)
 FACTORIAL(A)
 FFT_AMP(A)
 FFTA_SAMPLE(A)
 FFT_PHAS(A)
+LENGTH_OF_STRINGS(--)
+MAXSTRLEN(A)
 PASS_THRU(A)
+PASS_THRU_STRING(A)
 PERCENT_GOOD_T(A)
+PICK_A_STRING(A,N)
+PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3)
+SAMPLE_FAST_I(V,Indices)
+SEPARATE(A,Rowsize,FixLongitudes)
+SEPARATE_STR(A,Rowsize,FixLongitudes)
 STORAGE(A)
 STRING_ARG(Flags,NString)
+STRING_CAT3(A,B,C)
+STRING_LEN_SUM(S1,S2)
+STRINGS_AS_ARGS(S1,S2,NCHAR)
+STR_MISSING(MASK,STR,REPL)
 STUDENT_T_CUTOFF(P,nf)
 SUBTRACT(A,B)
+WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename)
  
  
 GO bn_reset
@@ -58313,7 +58337,7 @@ SORTI(DAT)
           T: inherited from argument(s)
           E: inherited from argument(s)
           F: inherited from argument(s)
-    DAT: variable to sort in I
+    DAT: variable to sort in I (FLOAT)
         Influence on output axes:
           X: no influence (indicate argument limits with "[]")
           Y: passed to result grid
@@ -59970,10 +59994,10 @@ SH GRID am
  
 GO bn_clock_syms
 SH SYM delta_cpu, clock_secs, current_date, current_time
-DELTA_CPU = "35.8975"
-CLOCK_SECS = "62.39"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:41:43"
+DELTA_CPU = "33.7209"
+CLOCK_SECS = "66.472"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:04:05"
 ! test special symbols DELTA_CPU, CLOCK_SECS
 !
 ! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE
@@ -59982,8 +60006,8 @@ CURRENT_TIME = "11:41:43"
 use gt4d011
 shade/k=1 temp[L=@ave]
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.033996"
-CLOCK_SECS = "62.45"
+DELTA_CPU = "0.036995"
+CLOCK_SECS = "66.57"
  
 repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=1
@@ -59997,60 +60021,60 @@ repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=9
 !-> REPEAT: K=10
 let ten_plots = ($DELTA_CPU)
- !-> DEFINE VARIABLE ten_plots = 0.268959
+ !-> DEFINE VARIABLE ten_plots = 0.259961
 sh sym DELTA_CPU, CLOCK_SECS
 DELTA_CPU = "0"
-CLOCK_SECS = "63.055"
+CLOCK_SECS = "67.499"
  
 let  sumclock = 0
 let  sumcpu = 0
 sh sym CLOCK_SECS
-CLOCK_SECS = "63.056"
+CLOCK_SECS = "67.499"
 repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\
 let sumcpu =`sumcpu + dt`)
  !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`)
 !-> REPEAT: K=1
- !-> DEFINE VARIABLE dt = 0.034994
- !-> DEFINE VARIABLE sumcpu =0.034994
+ !-> DEFINE VARIABLE dt = 0.029995
+ !-> DEFINE VARIABLE sumcpu =0.029995
 !-> REPEAT: K=2
- !-> DEFINE VARIABLE dt = 0.034995
- !-> DEFINE VARIABLE sumcpu =0.069989
+ !-> DEFINE VARIABLE dt = 0.036994
+ !-> DEFINE VARIABLE sumcpu =0.066989
 !-> REPEAT: K=3
- !-> DEFINE VARIABLE dt = 0.029995
- !-> DEFINE VARIABLE sumcpu =0.099984
+ !-> DEFINE VARIABLE dt = 0.040994
+ !-> DEFINE VARIABLE sumcpu =0.107983
 !-> REPEAT: K=4
- !-> DEFINE VARIABLE dt = 0.034994
- !-> DEFINE VARIABLE sumcpu =0.134978
+ !-> DEFINE VARIABLE dt = 0.041994
+ !-> DEFINE VARIABLE sumcpu =0.149977
 !-> REPEAT: K=5
- !-> DEFINE VARIABLE dt = 0.030996
- !-> DEFINE VARIABLE sumcpu =0.165974
+ !-> DEFINE VARIABLE dt = 0.041993
+ !-> DEFINE VARIABLE sumcpu =0.19197
 !-> REPEAT: K=6
- !-> DEFINE VARIABLE dt = 0.033995
- !-> DEFINE VARIABLE sumcpu =0.199969
+ !-> DEFINE VARIABLE dt = 0.043994
+ !-> DEFINE VARIABLE sumcpu =0.235964
 !-> REPEAT: K=7
- !-> DEFINE VARIABLE dt = 0.033994
- !-> DEFINE VARIABLE sumcpu =0.233963
+ !-> DEFINE VARIABLE dt = 0.034994
+ !-> DEFINE VARIABLE sumcpu =0.270958
 !-> REPEAT: K=8
- !-> DEFINE VARIABLE dt = 0.033996
- !-> DEFINE VARIABLE sumcpu =0.267959
+ !-> DEFINE VARIABLE dt = 0.036995
+ !-> DEFINE VARIABLE sumcpu =0.307953
 !-> REPEAT: K=9
- !-> DEFINE VARIABLE dt = 0.031995
- !-> DEFINE VARIABLE sumcpu =0.299954
+ !-> DEFINE VARIABLE dt = 0.035995
+ !-> DEFINE VARIABLE sumcpu =0.343948
 !-> REPEAT: K=10
- !-> DEFINE VARIABLE dt = 0.031995
- !-> DEFINE VARIABLE sumcpu =0.331949
+ !-> DEFINE VARIABLE dt = 0.041993
+ !-> DEFINE VARIABLE sumcpu =0.385941
  
 say `sumcpu`
- !-> MESSAGE/CONTINUE 0.331949
-0.331949
+ !-> MESSAGE/CONTINUE 0.385941
+0.385941
 sh sym CLOCK_SECS
-CLOCK_SECS = "64.012"
+CLOCK_SECS = "69.286"
  
 SH SYM session_date, current_date, session_time, current_time
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:40"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:41:44"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:02"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:04:08"
  
  
 ! ******** V6.3 Additions below ***********
@@ -61282,11 +61306,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890 at ave]
  strip regrid on T: TEMP --> ZNTERMED         @AVE
  reading TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 42 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 on X at AAV, on Y at AAV*
              FILENAME : gtsa056_1.cdf
@@ -61306,13 +61330,13 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gx=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> YNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at AVE, on Y at LIN, on Z at LIN, on T at LIN
              FILENAME : gtsa056_1.cdf
@@ -61332,11 +61356,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gt=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @ASN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
- regrid  TEMP     M: 34 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at LIN, on Y at LIN, on Z at LIN, on T at ASN
@@ -61365,7 +61389,7 @@ plot temp
  getgrid EX#1     C:  5 dset:   2 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS3DT1          PSXT1     PSYT1     PSZT2     TIME14    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
 setting up plot
 PPL plot 753  complete
 plot/over temp[g=u]
@@ -61375,12 +61399,12 @@ plot/over temp[g=u]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 28 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 27 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61392,7 +61416,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN
  strip regrid on T: TEMP --> XNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 23 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -61407,7 +61431,7 @@ plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890]
  strip regrid on X: TEMP --> G5_10G00ABCDEFGH @LIN
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
@@ -61423,12 +61447,12 @@ plot/over temp[g=u at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 26 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 19 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61440,7 +61464,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @AAV
  strip regrid on T: TEMP --> XNTERMED         @AVE
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 18 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 17 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -62570,65 +62594,65 @@ sp cat the_xml_file.xml
    <value>8765.82</value>
 </attribute>
 </axis>
-<axis name="ZAXLEVIT191_1">
+<axis name="XAX_LEV9421_380">
 <attribute name="direction" type="char">
-   <value><![CDATA[K]]></value>
+   <value><![CDATA[I]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[METERS]]></value>
+   <value><![CDATA[degrees_east]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>1</value>
+   <value>360</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>0</value>
+   <value>20.5</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>0</value>
-</attribute>
-<attribute name="positive" type="char">
-   <value><![CDATA[down]]></value>
+   <value>379.5</value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value>no</value>
+   <value><![CDATA[yes]]></value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[ZAXLEVIT191_1]]></value>
+   <value><![CDATA[XAX_LEV9421_380]]></value>
 </attribute>
 </axis>
-<axis name="XAX_LEV9421_380">
+<axis name="ZAXLEVIT191_1">
 <attribute name="direction" type="char">
-   <value><![CDATA[I]]></value>
+   <value><![CDATA[K]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[degrees_east]]></value>
+   <value><![CDATA[METERS]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>360</value>
+   <value>1</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>20.5</value>
+   <value>0</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>379.5</value>
+   <value>0</value>
+</attribute>
+<attribute name="positive" type="char">
+   <value><![CDATA[down]]></value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value><![CDATA[yes]]></value>
+   <value>no</value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[XAX_LEV9421_380]]></value>
+   <value><![CDATA[ZAXLEVIT191_1]]></value>
 </attribute>
 </axis>
 <axis name="YAX_LEV94">
@@ -62899,7 +62923,7 @@ define axis/t=1-jan-2010:30-mar-2010:1/units=days tin
 define axis/t=1-jan-2010:30-mar-2010:10/units=days tout
 let tt = t[gt=tout,L=1:10]
 sh grid tt
-    GRID (G089)
+    GRID (G091)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -63106,7 +63130,7 @@ list/x=2:3 sgrid
  
 let tpts = 39798 + 87*RANDU(I)
 show grid tt
-    GRID (G103)
+    GRID (G089)
  name       axis              # pts   start                end
  X10       X                  201 r   0                    10
  Y10       Y                  201 r   0                    10
@@ -64026,9 +64050,9 @@ list contents
              VARIABLE : { SPAWN:"cat redirect_journal.txt" }
              SUBSET   : 47 points (X)
  1    /  1:" ! NOAA/PMEL TMAP"                                                          
- 2    /  2:" ! FERRET v6.862  "                                                         
- 3    /  3:" ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14"                       
- 4    /  4:" ! 28-Mar-14 11:40     "                                                    
+ 2    /  2:" ! FERRET v6.93 (beta)"                                                     
+ 3    /  3:" ! Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14"                           
+ 4    /  4:" ! 29-Oct-14 16:02     "                                                    
  5    /  5:""                                                                           
  6    /  6:"! "                                                                         
  7    /  7:"!! --- 22. produce some output to stdout and stderr"                        
@@ -64090,23 +64114,24 @@ sh trans
 variable transforms e.g.SST[T=1-jan:15-mar at DDC]
    code        description                  code        description
    ----        -----------                  ----        -----------
-   @ITP        interpolated                 @SPZ        Parzen smoothed
-   @AVE        averaged                     @FAV        ave-filled
-   @VAR        variance                     @FLN        linear-filled
-   @SUM        summed                       @FNR        nearest-filled
-   @RSU        running sum                  @NGD        number of valid
-   @SHF        shifted                      @NBD        number flagged bad
-   @MIN        minimum                      @LOC        location
-   @MAX        maximum                      @WEQ        weighted equal
-   @DDC        centered derivative          @CDA        closest dist above
-   @DDF        forward derivative           @CDB        closest dist below
-   @DDB        backwards derivative         @CIA        closest index above
-   @DIN        integrated                   @CIB        closest index below
-   @IIN        indef. integ.                @EVN        event mask
-   @SBX        box smoothed                 @MED        median smoothed
-   @SBN        binomial smoothed            @SMX        maximum smoothed
-   @SWL        Welch smoothed               @SMN        minimum smoothed
-   @SHN        Hanning smoothed             @STD        standard deviation
+   @ITP        interpolated                 @FAV        ave-filled
+   @AVE        averaged                     @FLN        linear-filled
+   @VAR        variance                     @FNR        nearest-filled
+   @SUM        summed                       @NGD        number of valid
+   @RSU        running sum                  @NBD        number flagged bad
+   @SHF        shifted                      @LOC        location
+   @MIN        minimum                      @WEQ        weighted equal
+   @MAX        maximum                      @CDA        closest dist above
+   @DDC        centered derivative          @CDB        closest dist below
+   @DDF        forward derivative           @CIA        closest index above
+   @DDB        backwards derivative         @CIB        closest index below
+   @DIN        integrated                   @EVN        event mask
+   @IIN        indef. integ.                @MED        median smoothed
+   @SBX        box smoothed                 @SMX        maximum smoothed
+   @SBN        binomial smoothed            @SMN        minimum smoothed
+   @SWL        Welch smoothed               @STD        standard deviation
+   @SHN        Hanning smoothed             @WGT        weights for avg,int
+   @SPZ        Parzen smoothed
  
 regridding transforms e.g.SST[GX=x5deg at AVE]
    code        description                  code        description
@@ -66249,7 +66274,7 @@ let a = x[gx=0:2:1]; save/clob/file=a1.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX128)   X                    3 r   0                    2
+ (AX129)   X                    3 r   0                    2
  normal    Y
  normal    Z
  normal    T
@@ -66265,7 +66290,7 @@ let a = x[gx=1:3:1]; save/clob/file=a2.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX120)   X                    3 r   1                    3
+ (AX116)   X                    3 r   1                    3
  normal    Y
  normal    Z
  normal    T
@@ -66286,14 +66311,14 @@ can var/all; can dat/all
 use a1
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
  2   / 3:  2.000
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66308,7 +66333,7 @@ use a2
  
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66317,7 +66342,7 @@ list x[gx=a[d=1]]
 ! The bug was that this listed 1,2,3 rather than 0,1,2
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66333,7 +66358,7 @@ list x[gx=a[d=1,i=1:3]]
 ! Why is the following different?
 list x[gx=a[d=1],i=1:3]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66496,40 +66521,40 @@ can mode ver
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.940
-randu2_randn2       0.286
-randu2_randn2       0.045
-randu2_randn2       0.839
-randu2_randn2       0.445
+randu2_randn2       0.925
+randu2_randn2       0.939
+randu2_randn2       0.712
+randu2_randn2       0.070
+randu2_randn2       0.981
              VARIABLE : RANDU2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.553
-randu2_randn2       0.241
-randu2_randn2       0.063
-randu2_randn2       0.435
-randu2_randn2       0.366
+randu2_randn2       0.285
+randu2_randn2       0.165
+randu2_randn2       0.236
+randu2_randn2       0.633
+randu2_randn2       0.135
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.354
-randu2_randn2       0.314
-randu2_randn2       0.798
-randu2_randn2       0.528
-randu2_randn2       0.607
-randu2_randn2       0.108
+randu2_randn2       0.690
+randu2_randn2       0.225
+randu2_randn2       0.822
+randu2_randn2       0.494
+randu2_randn2       0.818
+randu2_randn2       0.578
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.215
-randu2_randn2       0.246
-randu2_randn2       0.099
-randu2_randn2       0.204
-randu2_randn2       0.104
-randu2_randn2       0.148
+randu2_randn2       0.195
+randu2_randn2       0.170
+randu2_randn2       0.390
+randu2_randn2       0.112
+randu2_randn2       0.716
+randu2_randn2       0.341
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66554,40 +66579,40 @@ randu2_randn2       0.638
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.345
-randu2_randn2      -1.197
-randu2_randn2      -1.226
-randu2_randn2      -0.532
-randu2_randn2       0.783
+randu2_randn2       2.118
+randu2_randn2       3.132
+randu2_randn2      -1.682
+randu2_randn2       1.951
+randu2_randn2      -1.088
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2      -0.339
-randu2_randn2      -0.069
-randu2_randn2       0.345
-randu2_randn2       2.072
-randu2_randn2      -1.610
+randu2_randn2      -1.474
+randu2_randn2      -1.168
+randu2_randn2       1.070
+randu2_randn2      -1.126
+randu2_randn2      -0.350
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       1.749
-randu2_randn2      -0.602
-randu2_randn2      -0.229
-randu2_randn2       1.741
-randu2_randn2       1.232
-randu2_randn2       0.522
+randu2_randn2       0.451
+randu2_randn2       2.386
+randu2_randn2       1.507
+randu2_randn2      -1.407
+randu2_randn2      -1.841
+randu2_randn2       1.406
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -0.061
-randu2_randn2       0.559
-randu2_randn2      -1.751
-randu2_randn2      -2.088
-randu2_randn2       0.150
-randu2_randn2       0.302
+randu2_randn2       0.293
+randu2_randn2      -0.300
+randu2_randn2      -0.661
+randu2_randn2       0.210
+randu2_randn2       1.113
+randu2_randn2      -0.920
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66612,14 +66637,14 @@ randu2_randn2      -1.279
  Column  1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1)
  Column  2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z)
  Column  3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z)
-randu2_randn2       1.017       1.494       0.754
-randu2_randn2       1.494       1.017       0.754
-randu2_randn2       0.754       0.754       0.257
-randu2_randn2       0.257       0.257       0.393
-randu2_randn2      -0.545      -0.545       0.393
-randu2_randn2      -0.658      -0.545       0.393
-randu2_randn2      -0.379      -0.379       0.393
-randu2_randn2       0.393       0.393       0.393
+randu2_randn2       1.173       1.545       0.424
+randu2_randn2       1.545       1.173       0.424
+randu2_randn2       0.424       0.424       0.224
+randu2_randn2      -0.186      -0.186       0.322
+randu2_randn2      -0.762      -0.186       0.322
+randu2_randn2      -0.144      -0.144       0.322
+randu2_randn2       0.224       0.224       0.322
+randu2_randn2       0.322       0.322       0.322
  
 GO bn_reset
 cancel mode verify
@@ -71072,10 +71097,10 @@ list a2[ge=eoffset at ave, gf=fax4day at ave]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71117,10 +71142,10 @@ list a2[ge=eoffset at sum, gf=fax4day at sum]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71162,10 +71187,10 @@ list a2[ge=eoffset at var, gf=fax4day at var]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71371,18 +71396,18 @@ list afcst[gf=ehour at max]
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- strip regrid on F: AFCST --> (G106)           @MAX
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ strip regrid on F: AFCST --> (G103)           @MAX
  eval    AFCST    C:  7 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  regrid  AFCST    M: 46 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
              VARIABLE : _F[GF=EDAY]
                         regrid: 24 hour on F at MAX
              SUBSET   : 5 points (FORECAST)
@@ -71393,8 +71418,8 @@ list afcst[gf=ehour at max]
  05-JAN-1990 00 / 5:  32497.0
 show grid
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G106)
-    GRID (G106)
+ Last successful data access was on grid (G103)
+    GRID (G103)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -71427,7 +71452,7 @@ show data fourfiles
  
 list/i=3 sst[T=@ave]
  getgrid EX#1     C:  5 dset:   5 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ allocate dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  strip --> SST[T=01-JAN00:45:31-DEC06:34 at AVE,D=5]
@@ -71455,7 +71480,7 @@ list/i=3 sst[T=@ave]
 cancel data fourfiles
  -DELETE SST      M: 66 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  -DELETE SST      M: 74 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L: -999 -999  M:    1    4  N: -999 -999
- dealloc  dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ dealloc  dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  
 ! Create airt in the other datasets by LET/D definitions.
 let/d=ens2 airt = sst + 1
@@ -72401,8 +72426,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72452,8 +72477,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72491,8 +72516,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72530,8 +72555,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72561,8 +72586,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72593,8 +72618,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72654,8 +72679,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72699,8 +72724,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72754,8 +72779,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72790,8 +72815,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72826,8 +72851,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72862,8 +72887,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72894,8 +72919,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73124,8 +73149,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73156,8 +73181,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73197,8 +73222,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73235,8 +73260,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73260,8 +73285,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             INT       units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73285,8 +73310,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73725,8 +73750,8 @@ variables:
 		A:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -73754,8 +73779,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -73805,8 +73830,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -74271,6 +74296,54 @@ sh grid sal
  normal    E
  normal    F
  
+! This file from the datset "West Coast Carbon cruises" in our
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+ 
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ 
+sh dat 2
+     currently SET data sets:
+    2> ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc  (default)
+ name     title                             I         J         K         L         M         N
+ PROF     Prof                             ...       ...       ...       ...       1:21      ...
+ TIME     Time                             ...       ...       ...       ...       1:21      ...
+ LATITUDE Latitude                         ...       ...       ...       ...       1:21      ...
+ LONGITUDE
+          Longitude                        ...       ...       ...       ...       1:21      ...
+ ROWSIZE  Number of Observations for this  ...       ...       ...       ...       1:21      ...
+ PRESS_DB PRESS_DB                         1:373     ...       ...       ...       ...       ...
+ PCO2     PCO2                             1:373     ...       ...       ...       ...       ...
+ 
+sh att (profile)
+     attributes for dataset: ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ (profile)._FillValue = -1.E+34
+ (profile).actual_range = 70, 90
+ (profile).cf_role = profile_id 
+ (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt 
+ (profile).long_name = profile ID: Cruise and Station 
+ (profile).missing_value = -1.E+34
+ (profile).orig_file_axname = profile 
+sh grid rowsize
+    GRID GSS1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ normal    T
+ PROFILE   E                   21 r   70                   90
+ normal    F
+sh grid pco2
+    GRID GSS2
+ name       axis              # pts   start                end
+ OBS1      X                  373 r   1                    373
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
+ 
 GO bn_reset
 cancel mode verify
 GO bn_nco_append
@@ -74322,9 +74395,10 @@ variables:
 		DDAT_ORIG:long_name = "DDAT[GZ=ZAXIS_ORIG at ASN]" ;
 
 // global attributes:
-		:history = "Fri Mar 28 11:42:04 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
-			"FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "Wed Oct 29 16:04:27 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
+			"FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
+		:NCO = "4.4.6" ;
 }
  
 GO bn_reset
@@ -74356,8 +74430,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74387,8 +74461,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74449,8 +74523,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! On a SAVE either with /BOUNDS or no bounds qualifier,
@@ -74477,8 +74551,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75645,20 +75719,20 @@ save/file=a.nc/clobber labels
 sp ncdump -h a.nc
 netcdf a {
 dimensions:
-	ENSEMBLE = 3 ;
+	ENSEMBLE1 = 3 ;
 	maxStrlen64 = 64 ;
 variables:
-	double ENSEMBLE(ENSEMBLE) ;
-		ENSEMBLE:long_name = "Ensemble of Realizations" ;
-		ENSEMBLE:axis = "E" ;
-		ENSEMBLE:point_spacing = "even" ;
-	char LABELS(ENSEMBLE, maxStrlen64) ;
+	double ENSEMBLE1(ENSEMBLE1) ;
+		ENSEMBLE1:long_name = "Ensemble of Realizations" ;
+		ENSEMBLE1:axis = "E" ;
+		ENSEMBLE1:point_spacing = "even" ;
+	char LABELS(ENSEMBLE1, maxStrlen64) ;
 		LABELS:long_name = "Realizations" ;
 		LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! The behavior is unchanged for user-defined variables
@@ -75680,8 +75754,8 @@ variables:
 		STRVAR:long_name = "mystrings" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75709,9 +75783,9 @@ fill/lev=(20,30,10)/L=1 sst
 ! *********** v6.9 Additions ***********
 GO bn_reset
 cancel mode verify
-GO bn687_bug_fixes
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+GO bn69_bug_fixes
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
  
 GO bn_reset
@@ -75908,8 +75982,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Yet more combinations
@@ -75938,8 +76012,8 @@ variables:
 		A:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST
@@ -75959,8 +76033,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Subsets also use XAXIS_TEST1
@@ -75980,8 +76054,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Unless we use /KEEP_AXISNAMES - which removes renaming
@@ -76002,8 +76076,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! If we try /KEEP_AXISNAMES but there is a conflict, it's an err
@@ -76110,6 +76184,15 @@ sh var
      C = 1
  
 use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+ 
+let a = 1
+let b = 2
+set var/name=b a
+ 
+! Intentional error, new name already in file
+ 
+ 
 ! Intentional error, new name already in file
 set var/name=temp salt
 show dat
@@ -76163,7 +76246,8 @@ show dat
  DIFF[D=gt4d011] = TAUX - TAUY
  
  
- 
+! another error, new name is a user-var
+yes? set var/name=diff w
  
 SET MODE/LAST ignore
  
@@ -76351,7 +76435,6 @@ DAYSAXIS1
 set axis/name=days2000 daysaxis
  
 ! and now rename the one from the dataset back to its original name
- 
 set axis/name=daysaxis `a,return=taxis`
  !-> set axis/name=daysaxis DAYSAXIS1
 sh grid a
@@ -76414,8 +76497,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -76430,8 +76513,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -76446,8 +76529,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.862   28-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        29   T       FERRET V6.93 (beta) 29-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -76472,275 +76555,2354 @@ set axis/name=.fr x_in_meters
  
 set mode/last ignore
  
+! *********** v6.9+ Additions ***********
+GO bn_reset
+cancel mode verify
+GO bn691_bug_fixes
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
  
-!  *********** Always do a bn_reset  ***********
-!  *********** make sure things clean up well **
 GO bn_reset
 cancel mode verify
+GO err69_arg_type_error
+! err69_arg_type_error
+! See ticket 2169
+!
+set mode ignore
+sh func  tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+    A: time steps to convert
+    B: variable with reference time axis
+    C: output precision (STRING)
+sh func /detail tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+        Axes of result:
+          X: inherited from argument(s)
+          Y: inherited from argument(s)
+          Z: inherited from argument(s)
+          T: inherited from argument(s)
+          E: inherited from argument(s)
+          F: inherited from argument(s)
+    A: time steps to convert (FLOAT)
+        Influence on output axes:
+          X: passed to result grid
+          Y: passed to result grid
+          Z: passed to result grid
+          T: passed to result grid
+          E: passed to result grid
+          F: passed to result grid
+    B: variable with reference time axis (FLOAT)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+    C: output precision (STRING)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
  
-! version 2.3 requires exit/command *sh* 3/92
-exit/command
-yes? ! bn_all_ef_shell.jnl
-yes? ! 5/05 *acm*
-yes? ! run bn_all_ef tests
-yes? 
-yes? GO bn_all_ef
- 	NOAA/PMEL TMAP
- 	FERRET v6.862  
- 	Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14
- 	28-Mar-14 11:42     
-
-SET MODE VERIFY
-! bn_all_ef.jnl
-! - run all the benchmark tests for externally-linked external functions.
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+ 
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+             VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes")
+             TIME     : 03-JAN-2000 00:00
+        "03-JAN-2000 00:00"
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ 
+set mode /last ignore
  
  
 GO bn_reset
 cancel mode verify
-GO bn_ef_external_functions.jnl
-! Tests of external functions that are distributed as shared object files.
+GO err69_bad_bounds
+! err69_bad_bounds.jnl
+! See ticket 2170
  
-! Jon's benchmarks
-go bench_examples
-set mode ignore_error
-show func/ext add_9
-ADD_9(A,B,C,D,E,F,G,H,I)
-    (demonstration function) adds 9 arguments
-show func/ext ave*
-AVE_SCAT2GRID_T(TPTS,VPTS,TAXIS)
-    Compute average of a variable in each cell of output time axis
-    TPTS: T coordinates of scattered input time coordinates
-    VPTS: Variable at times in TPTS
-    TAXIS: Output time axis
-AVET(A)
-    (demonstration function) returns the time average
-    A: data to be averaged over the time axis
-show func pass_thru
-PASS_THRU(A)
-    (demonstration function) sets result equal to input
-    A: this arg is passed through
-show func sto*
-STORAGE(A)
-    sets result equal to input/10
-    A: input
+set mode ignore
  
-go bench_add_9
-! Bench_add_9.jnl
-!  ACM  8/99
-!  benchmark script for testing external function add_9.
-! Note: bench_add_9_visual contains plots of similar computations
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_even.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_PTSPAC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_non_enclose.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_uneven.nc
+             TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_IRR)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  7.000
+13-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  4.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+sh axis TAX_BB*
+ name       axis              # pts   start                end
+ TAX_BB_IRR TIME                6 i   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 31
+ TAX_BB_EVEN_NOENC TIME         6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ TAX_BB_PTSPAC TIME             6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
  
-set mode ignore_errors
+set mode/last ignore
  
+GO bn_reset
+cancel mode verify
+GO err69_const_array
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174
+! expressions are not allowed in constant-array definitions.
  
-can region
-use coads_climatology
-set region/x=151E:179E/y=0
+set mode ignore
  
-let a1 = sst[d=1,l=1]
-let a2 = sst[d=1,l=2]
-let a3 = sst[d=1,l=3]
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
  
-let a = add_9(a1,a2,a3,a1,a2,a3,a1,a2,a3)
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
  
-list a
-             VARIABLE : ADD_9(A1,A2,A3,A1,A2,A3,A1,A2,A3)
-             SUBSET   : 15 points (LONGITUDE)
-             LATITUDE : 1S
-             TIME     : 16-JAN 06:00
-                1S    
-                45
- 151E   / 66:  263.6
- 153E   / 67:  264.5
- 155E   / 68:  264.2
- 157E   / 69:  261.3
- 159E   / 70:  260.9
- 161E   / 71:  262.4
- 163E   / 72:  264.0
- 165E   / 73:  261.1
- 167E   / 74:  260.9
- 169E   / 75:  261.0
- 171E   / 76:  259.3
- 173E   / 77:  257.9
- 175E   / 78:  257.0
- 177E   / 79:  259.1
- 179E   / 80:  254.8
-list  a - 3 * sst[d=1,l=1:3 at sum]
-             VARIABLE : A - 3 * SST[D=coads_climatology,L=1:3 at SUM]
-             SUBSET   : 15 points (LONGITUDE)
-             LATITUDE : 1S
-             TIME     : 16-JAN 06:00
-                 1S    
-                 45
- 151E   / 66:  0.0000
- 153E   / 67:  0.0000
- 155E   / 68:  0.0000
- 157E   / 69:  0.0000
- 159E   / 70:  0.0000
- 161E   / 71:  0.0000
- 163E   / 72:  0.0000
- 165E   / 73:  0.0000
- 167E   / 74:  0.0000
- 169E   / 75:  0.0000
- 171E   / 76:  0.0000
- 173E   / 77:  0.0000
- 175E   / 78:  0.0000
- 177E   / 79:  0.0000
- 179E   / 80:  0.0000
-set mode/last ignore_errors
-go bench_avet
-! Bench_avet.jnl
-!  ACM  8/99
-!  benchmark script for testing external function avet.
-! Note: bench_avet_visual.jnl contains plots of similar computations
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
  
-set mode ignore_errors
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+ 
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+             VARIABLE : {-0.001, 1.23E-2, -45.E3}
+             SUBSET   : 3 points (X)
+ 1   / 1:     -0.001
+ 2   / 2:      0.012
+ 3   / 3: -45000.000
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_multi_label_ascii
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM
+! ticket 2176
+! Multi-line labels and ascii fonts.
+ 
+plot/vs/nolab {0,1},{0,1}
+ 
+ 
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+ 
+ 
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+ 
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+ 
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+ 
+! escape just the special characters.
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+ 
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ens_badvalue
+! err69_ens_badvalue.jnl
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled
+! when defining an ensemble.
+ 
+use maize_1.nc, maize_2.nc, maize_3.nc
+ 
+! Note the _FillValue,  flag
+sho att maize_yield
+     attributes for dataset: ./maize_3.nc
+ MAIZE_YIELD._FillValue = 9.96921E+36
+ MAIZE_YIELD.long_name =  Maize harvest 
+ MAIZE_YIELD.units = kgC.m-2.yr-1 
+ MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize 
+ensemble ens = 1,2,3
+ 
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
+             LONGITUDE: 8W(-8) to 6W(-6)
+             LATITUDE: 29.25N
+             E: 0.5 to 3.5 (number of valid)
+ Column  1: MAIZE_YIELD[D=maize_1] is  Maize harvest (kgC.m-2.yr-1)
+ Column  2: MAIZE_YIELD[D=maize_2] is  Maize harvest (kgC.m-2.yr-1)
+ Column  3: MAIZE_YIELD[D=maize_3] is  Maize harvest (kgC.m-2.yr-1)
+ Column  4: MAIZE_YIELD[D=ENS,E=@NGD] is  Maize harvest (# of points)
+        MAIZE_YIELD  MAIZE_YI MAIZE_Y MAIZE_YIELD
+7.75W  / 1:     ....  0.05247  0.1022   2.000
+7.25W  / 2:  0.01818  0.03588  0.0049   3.000
+6.75W  / 3: -0.00002  0.02030 -0.0139   3.000
+6.25W  / 4:     ....     ....    ....   0.000
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_by_levels
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_histogram
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
+ 
+GO bn_reset
+cancel mode verify
+GO err69_repl_scinot
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+ 
+let a = 1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (1.E-10)
+(1.E-10)
+ 
+let a = -1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.E-10)
+(-1.E-10)
+ 
+let a = -1.23e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.23E-10)
+(-1.23E-10)
+ 
+let a = -1.23e-2
+say (`a`)
+ !-> MESSAGE/CONTINUE (-0.0123)
+(-0.0123)
+ 
+GO bn_reset
+cancel mode verify
+GO err691_bnds_case
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+ 
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+ 
+set mode/last upcase_output
+ 
+GO bn_reset
+cancel mode verify
+GO err69_plot_vs_labs
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
  
-can region
 use coads_climatology
-set region/x=151E:179E/y=0
  
-let a = avet(sst)
-list a
-             VARIABLE : AVET(SST)
-             FILENAME : coads_climatology.cdf
-             SUBSET   : 15 points (LONGITUDE)
-             LATITUDE : 1S
-                1S    
-                45
- 151E   / 66:  29.28
- 153E   / 67:  29.39
- 155E   / 68:  29.35
- 157E   / 69:  29.03
- 159E   / 70:  28.99
- 161E   / 71:  29.15
- 163E   / 72:  29.33
- 165E   / 73:  29.01
- 167E   / 74:  28.99
- 169E   / 75:  29.00
- 171E   / 76:  28.81
- 173E   / 77:  28.66
- 175E   / 78:  28.56
- 177E   / 79:  28.79
- 179E   / 80:  28.31
-list a - sst[l=@ave]
-             VARIABLE : A - SST[L=@AVE]
-             FILENAME : coads_climatology.cdf
-             SUBSET   : 15 points (LONGITUDE)
-             LATITUDE : 1S
-             TIME     : 01-JAN 00:45 to 01-APR 08:12
-                  1S      
-                  45
- 151E   / 66:  0.000E+00
- 153E   / 67: -3.553E-15
- 155E   / 68:  0.000E+00
- 157E   / 69:  0.000E+00
- 159E   / 70:  3.553E-15
- 161E   / 71:  7.105E-15
- 163E   / 72:  3.553E-15
- 165E   / 73:  0.000E+00
- 167E   / 74:  0.000E+00
- 169E   / 75:  3.553E-15
- 171E   / 76:  0.000E+00
- 173E   / 77:  3.553E-15
- 175E   / 78:  0.000E+00
- 177E   / 79:  3.553E-15
- 179E   / 80:  3.553E-15
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+set v right; plot/vs c,b; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
  
-can region
-let a = x[i=1:9,k=1:5] + t[l=1:5]
-let b = x[i=1:9,k=1:5]
-let c = avet(a)
-list b, c
-             X: 0.5 to 9.5
- Column  1: B is X[I=1:9,K=1:5]
- Column  2: C is AVET(A)
-             B     C
-1   / 1:  1.000   4.00
-2   / 2:  2.000   5.00
-3   / 3:  3.000   6.00
-4   / 4:  4.000   7.00
-5   / 5:  5.000   8.00
-6   / 6:  6.000   9.00
-7   / 7:  7.000  10.00
-8   / 8:  8.000  11.00
-9   / 9:  9.000  12.00
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
  
-set mode/last ignore_errors
-go bench_pass_thru
-! Bench_pass_thru.jnl
-!  ACM  8/99
-!  benchmark script for testing external function pass_thru.
-! Note: bench_pass_thru_visual.jnl contains plots of similar computations
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+set v right; plot/trans/vs c,b; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
  
-set mode ignore_errors
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+GO bn_reset
+cancel mode verify
+GO err69_levels_v
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes
+! made to throw out data outside 3 std when
+! computing the mean and std dev for color levels.
+ 
+use "lev_v_bug.nc"
+shade/lev=v var2d
+ 
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+LEV_TEXT = "V"
+LEV_HISTO_LEVELS = "1.1,1.2,1.6,1.9,2.4,2.5,3.8,5.4,10.2,13.6,14.9"
+LEV_MIN = "-1.E+34"
+LEV_NUM = "52"
+LEV_DEL = "2.0000E+32"
+LEV_MAX = "4.0000E+32"
  
-can region
-let a = pass_thru(x)
-list a[i=1:20]
-             VARIABLE : PASS_THRU(X)
-             SUBSET   : 20 points (X)
- 1    /  1:   1.00
- 2    /  2:   2.00
- 3    /  3:   3.00
- 4    /  4:   4.00
- 5    /  5:   5.00
- 6    /  6:   6.00
- 7    /  7:   7.00
- 8    /  8:   8.00
- 9    /  9:   9.00
- 10   / 10:  10.00
- 11   / 11:  11.00
- 12   / 12:  12.00
- 13   / 13:  13.00
- 14   / 14:  14.00
- 15   / 15:  15.00
- 16   / 16:  16.00
- 17   / 17:  17.00
- 18   / 18:  18.00
- 19   / 19:  19.00
- 20   / 20:  20.00
-set region/i=1:20
-list sin(a)
-             VARIABLE : SIN(A)
-             SUBSET   : 20 points (X)
- 1    /  1:  0.8415
- 2    /  2:  0.9093
- 3    /  3:  0.1411
- 4    /  4: -0.7568
- 5    /  5: -0.9589
- 6    /  6: -0.2794
- 7    /  7:  0.6570
- 8    /  8:  0.9894
- 9    /  9:  0.4121
- 10   / 10: -0.5440
- 11   / 11: -1.0000
- 12   / 12: -0.5366
- 13   / 13:  0.4202
- 14   / 14:  0.9906
- 15   / 15:  0.6503
- 16   / 16: -0.2879
- 17   / 17: -0.9614
- 18   / 18: -0.7510
- 19   / 19:  0.1499
- 20   / 20:  0.9129
-can var/all
-can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_letd_dsetnum
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
  
 use coads_climatology
-let a = pass_thru(sst[l=@ave,y=@sbx:11])
-list/x=50 a
-             VARIABLE : PASS_THRU(SST[L=@AVE,Y=@SBX:11])
-             FILENAME : coads_climatology.cdf
-             SUBSET   : 90 points (LATITUDE)
-             LONGITUDE: 49E
-             TIME     : 01-JAN 00:45 to 01-APR 08:12
-               49E   
-               15
- 89N   / 90:   ....
- 87N   / 89:   ....
- 85N   / 88:   ....
- 83N   / 87:   ....
+let/d=`sst,r=dsetnum` a = 1
+ !-> DEFINE VARIABLE/d=1 a = 1
+sh dat
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ ------------------------------
+ A[D=coads_climatology] = 1
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_long_string_to_xml
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+!
+ 
+list/clobber/file="out.xml"/nohead/norow 1
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+ 
+sp cat out.xml
+   1.000
+<mytag><![CDATA[Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC200406 [...]
+ 
+GO bn_reset
+cancel mode verify
+GO err69_fill_trans
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+ 
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+ 
+list myvar
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             SUBSET   : 15 points (X)
+ 1    /  1:  1.000
+ 2    /  2:  2.000
+ 3    /  3:  3.000
+ 4    /  4:   ....
+ 5    /  5:   ....
+ 6    /  6:   ....
+ 7    /  7:   ....
+ 8    /  8:   ....
+ 9    /  9:   ....
+ 10   / 10:  4.000
+ 11   / 11:   ....
+ 12   / 12:  5.000
+ 13   / 13:  6.000
+ 14   / 14:  7.000
+ 15   / 15:  8.000
+list myvar[x=6 at fnr:2]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 2 pts)
+        ....
+ 
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 10 pts)
+          3.000
+ 
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (ave-filled by 18 pts)
+          4.500
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_load_big_grid
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+ 
+set mode ignore
+ 
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+ 
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+    GRID (G085)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              1828 r   01-JAN-2000 00:00    01-JAN-2005 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+    GRID (G085)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              3654 r   01-JAN-2000 00:00    01-JAN-2010 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+cancel mode ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_write_attribute
+! err69_write_attribute.jnl
+! Bug 1863
+ 
+use gt4d011.cdf
+sh grid temp
+    GRID PS3DT21
+ name       axis              # pts   start                end
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+ TIME16    TIME                25 r   17-AUG-1982 12:00    10-JAN-1983 12:00
+ normal    E
+ normal    F
+let a = temp[x=@ave,y=@ave,L=1]
+ 
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (PSZT2).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double A(TIME16, PSZT21_10) ;
+ 
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double B(TIME16, PSZT21_10) ;
+ 
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i  "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double C(PSZT21_10) ;
+ 
+can data/all
+can var/all
+ 
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+ 
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+ 
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+ 
+use aa
+use bb
+set data 1
+ 
+show att (`temp,r=zaxis`)
+ !-> show att (ZZDEP)
+     attributes for dataset: ./aa.nc
+ (ZZDEP).point_spacing = uneven 
+ (ZZDEP).axis = Z 
+ (ZZDEP).bounds = ZZDEP_bnds 
+ (ZZDEP).positive = down 
+ (ZZDEP).standard_name = depth 
+ (ZZDEP).orig_file_axname = ZZDEP 
+ 
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP1).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP1
+	ZZDEP1 = 15 ;
+	double ZZDEP1(ZZDEP1) ;
+		ZZDEP1:axis = "Z" ;
+		ZZDEP1:bounds = "ZZDEP1_bnds" ;
+		ZZDEP1:positive = "down" ;
+		ZZDEP1:standard_name = "depth" ;
+	double ZZDEP1_bnds(ZZDEP1, bnds) ;
+	double A(ZZDEP1) ;
+ 
+let a = temp[d=2,gz=temp[d=1]]
+ 
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+ 
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+sp rm aa.nc bb.nc
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_countervar_context
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+ 
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+!-> REPEAT: B:1
+ !-> MESSAGE/CONTINUE 1
+1
+!-> REPEAT: B:2
+ !-> MESSAGE/CONTINUE 2
+2
+!-> REPEAT: B:3
+ !-> MESSAGE/CONTINUE 3
+3
+ 
+can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_label_backspace
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+ 
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_and_regridding
+! err69_isready_and_regridding.jnl
+! Ticket 2204: A `var,return=isready` sends Ferret into a hanged
+! state after other contexts have been defined
+ 
+can dat/all
+ 
+! create & load a file with a Gregorian time axis
+def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135}
+let a = t[gt=tax_g]
+save/clob/file=a.nc a
+can var a
+can ax tax_g
+use a.nc
+ 
+! create a variable on a Julian time axis
+def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j
+let b = t[gt=tax_j]
+ 
+! put the Gregorian data on the Julian axis
+let a2 = a
+let a2_on_b = a2[gt=b]
+ 
+! create a climatological axis (Julian)
+def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75}
+ 
+let b_one = missing(1+0*b,1)      !set everything to 1
+let nyr = b_one[gl=tax_jc at modsum] !# years that include each month
+ 
+! Execute some commands which put things into context storage
+ 
+say `a2_on_b,r=title`
+ !-> MESSAGE/CONTINUE A2[GT=B]
+A2[GT=B]
+say `nyr[l=1]`
+ !-> MESSAGE/CONTINUE 23
+23
+ 
+! This got us into a weird hanged state
+IF `a2_on_b,r=isready` THEN
+ !-> IF 1         THEN
+ENDIF
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_and_uvar_regrid
+! err69_vtree_and_uvar_regrid.jnl
+! Ticket 2206: This lead to a crash.
+! 10/9/2014
+ 
+let a = t[gt=1:2:1]
+let b2 = a
+let c = b2[gt=a]
+GO bn_vtree.sub c
+/TREE=ALL
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=USER
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_cancel_axis
+! err69_vtree_cancel_axis
+! Ticket 2201: After a return=isready,
+! cannot cancel the axis used by the var
+! 10-Oct-2014
+ 
+define axis/x=0:360:1 xax1
+define axis/x=0:360:10 xax2
+ 
+let a = x[gx=xax1]
+say `a,return=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX1]
+X[GX=XAX1]
+ 
+let b = a[gx=xax2]
+say `b,return=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+cancel var a b
+cancel axis xax1
+cancel axis xax2
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_bugs
+! err69_isready_bugs.jnl
+! Tickets 2201 and 2215
+ 
+! ticket 2201: isready operation meant we couldn't cancel the second axis
+ 
+def ax/x=0:360:1 xax_isready_1
+def ax/x=0:360:10 xax_isready_2
+let a = x[gx=xax_isready_1]
+say `a,r=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX_ISREADY_1]
+X[GX=XAX_ISREADY_1]
+let b = a[gx=xax_isready_2]
+load b
+say `b,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+ 
+can var a
+can axis xax_isready_1
+can var b
+can axis xax_isready_2
+ 
+! Ticket 2215, only with an unreleased Ferret; the first fix to 2201.
+ 
+let a = x[gx=1:3:1]
+let b = a - a[gx=a]
+let c = 1
+let/unit="m" f = b*c
+say `f,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+say `f,r=unit`
+ !-> MESSAGE/CONTINUE m
+m
+ 
+GO bn_reset
+cancel mode verify
+GO bn_append_dsg
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced.
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!
+! We append more variables to the file, using the same obs dimension.
+ 
+sp rm test_save_dsg.nc
+sp cp test_save_dsg_in.nc test_save_dsg.nc
+ 
+use test_save_dsg.nc
+ 
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+ 
+save/quiet/append/file=test_save_dsg.nc lon360
+ 
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+ 
+sp ncdump -h test_save_dsg.nc
+netcdf test_save_dsg {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:History = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "CF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+}
+ 
+GO bn_reset
+cancel mode verify
+GO bn_global_atts
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41
+ 
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+netcdf global {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventions" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+sp ncdump -h global_copy.nc
+netcdf global_copy {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0FERRET V6.93 (beta) 29-Oct-14" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventionsCF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+ 
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+ 
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.71    9-May-14 
+ ..Conventions = Existing conventions note, CF-1.0 
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.93 (beta) 29-Oct-14 
+ ..Conventions = Existing conventions note, , CF-1.6 
+ 
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_conventions_history
+! bn_conventions_history.jnl
+! ticket 2169:
+! Write conventions CF-1.6
+! When appending to the Conventions and history
+! attribute, add the new stuff with a comma and newline.
+ 
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the file 
+ ..Conventions = Conventions for variables named V2 
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the fileFERRET V6.93 (beta) 29-Oct-14 
+ ..Conventions = Conventions for variables named V2CF-1.6 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_center_key_labels
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key
+ 
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+ 
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+ 
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+ 
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+ 
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up
+ 
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+ 
+can data coads_climatology
+ 
+! Automatically restore regular handling of levels
+shade temp
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_wgt_transform
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+ 
+! Define an XYT grid
+ 
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+ 
+! Varies in y with latitude correction
+shade/l=1 weights
+ 
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+             VARIABLE : VAR[X=@WGT,Y=@WGT]
+             LONGITUDE: 1E to 1E(361) (XY summed)
+             LATITUDE : 90S to 90N (XY summed)
+             TIME     : 16-JAN 12:00
+          5.101E+14
+ 
+! Varies in T because of irregular t axis
+shade/x=1 weights
+ 
+ 
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+ 
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+             TIME: 01-JAN 00:00 to 31-DEC 05:49
+             LONGITUDE: 1E (interpolated)
+             LATITUDE: 1N
+ Column  1: MYWT is VAR[T=@WGT]
+ Column  2: EX#2 is MYWT/SECPERDAY
+                         MYWT   EX#2
+16-JAN 12      /  1:  2678400.  31.00
+15-FEB 02      /  2:  2440152.  28.24
+15-MAR 17      /  3:  2678400.  31.00
+15-APR 05      /  4:  2592000.  30.00
+15-MAY 17      /  5:  2678400.  31.00
+15-JUN 05      /  6:  2592000.  30.00
+15-JUL 17      /  7:  2678400.  31.00
+15-AUG 17      /  8:  2678400.  31.00
+15-SEP 05      /  9:  2592000.  30.00
+15-OCT 17      / 10:  2678400.  31.00
+15-NOV 05      / 11:  2592000.  30.00
+15-DEC 17      / 12:  2678400.  31.00
+ 
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 9 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:  10.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:  10.00
+ 55    / 6:  10.00
+ 65    / 7:  10.00
+ 75    / 8:  10.00
+ 85    / 9:   2.00
+ 
+! This finds the previous result in memory - needs to
+! reuse the correct one.
+ 
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+GO bn_reset
+cancel mode verify
+GO bn_show_outfile
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE=
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+ 
+! test various combinations of /append and /clobber
+ 
+!can mode verify
+ 
+! show axis/outfile
+ 
+ 
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+ 
+SAY ---------------- Just axis month_irreg
+---------------- Just axis month_irreg
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ 
+show axis/append/outfile=a.txt PS*
+ 
+SAY ---------------- appending all axes starting with PS
+---------------- appending all axes starting with PS
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = axis span)
+ PSXU      LONGITUDE          160mr   131E                 70W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+   Axis span (to cell edges) = 80.00004
+ PSYU      LATITUDE           100 i   27.672S              50N
+   Axis span (to cell edges) = 80.2682
+ PSZT      Z (zorro)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSZW      DEPTH (m)           27 i-  10                   4149
+   Axis span (to cell edges) = 4144
+ PSYT5_89  LATITUDE            85 i   20.151S              21.613N
+   Axis span (to cell edges) = 43.60417
+ PSZT1_2   DEPTH (m)            2 r-  5                    15
+   Axis span (to cell edges) = 20
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+   Axis span (to cell edges) = 80.00004
+ PSZT1     Z (METERS)          27 i   5                    3824
+   Axis span (to cell edges) = 4149
+ 
+! show grid/outfile
+ 
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just the grid of sst
+---------------- Just the grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+! show var/outfile
+ 
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+ 
+SAY ---------------- show var output from two user vars
+---------------- show var output from two user vars
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+cancel var/all
+ 
+! show data/outfile
+ 
+show data/append/outfile=a.txt
+ 
+SAY ---------------- appending show data
+---------------- appending show data
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+! combinations of /append and /clobber
+ 
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+ 
+SAY ---------------- Just show data, two show data/clobber commands in a row
+---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just grid of sst
+---------------- Just grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+use coads_climatology
+use levitus_climatology
+ 
+show data/clobber/outfile=a.txt 1
+ 
+SAY ---------------- Just dataset 1
+---------------- Just dataset 1
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show data/append/outfile=a.txt levitus_climatology
+ 
+SAY ---------------- appending datset 2 by name
+---------------- appending datset 2 by name
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+     currently SET data sets:
+    2> ./levitus_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                      1:160     1:90      1:1       ...       ...       ...
+ 
+show grid/clobber/outfile=a.txt PS3*
+ 
+SAY ---------------- only showing all grids starting with PS3
+---------------- only showing all grids starting with PS3
+sp cat a.txt
+      PS3DT
+      PS3DU
+      PS3DW
+      PS3DT2
+ 
+SAY ---------------- tests sending output of vtree to a file
+---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+! bn_tree_outfile.jnl
+ 
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+ 
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+ 
+!
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+   A = 1
+ 
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+   C = SIN(B)
+     B = 1
+ 
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+ 
+! ================
+ 
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1
+   FV1[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+a is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   A = FV1 + FVX
+     FV1
+     FVX
+   in default dataset my_file_vars
+   A = FV1 + FVX
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset other_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1[d=my_file_var]
+     FV1
+********************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: V[D=NOEXIST]
+************************
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   V[D=NOEXIST]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: NOVAR[D=NODSET]
+************************
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   NOVAR[D=NODSET]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+RESHAPE(fvx,fvz) is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FVX
+   FVZ
+   FVX[d=my_file_vars]
+   FVZ[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+     FV1
+       FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+   NOEXIST  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   NOEXIST[GZ(DEPTH)=ZPTS]  (unknown variable)
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+   NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]  (unknown variable)
+   UNKNOWN_AUX  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+     FV1[d=my_file_var]
+     FV1[d=other_file_var]
+     FV1[d=another_file_var]
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+ 
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fvx is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=my_file_var]
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=other_file_var]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=another_file_var]
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+ 
+   FVX[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ILLEGAL RECURSIVE VARIABLES: P1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S3  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: S1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S1  (unknown variable)
+   S3  (unknown variable)
+   in default dataset my_file_vars
+   FV = FV1 + FV1 + FV1
+   in default dataset MY_UVAR_AGG
+   FV = FV1 + FV1 + FV1
+     FV1   (aggregate variable)
+   in default dataset other_file_vars
+   UV = FVX + FVX + FVX
+     FVX = FV1 + X[GX=FVX[D=1],I=1:3]
+   in default dataset MY_UVAR_AGG
+   UV = FVX + FVX + FVX
+     FVX   (aggregate variable)
+       FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+***************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v2 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+         FV1[d=my_file_var]
+         FV1[d=other_file_var]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v3 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+       FV1[d=my_file_var]
+       FV1[d=other_file_var]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: F
+************************
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+       FV1[d=my_file_var]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   FVX[d=my_file_var]
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   F  (unknown variable)
+   FV1[d=my_file_vars]
+   NOEXIST  (unknown variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN GRID: A[G=NOEXIST]
+************************
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   A[G=NOEXIST]  (unknown grid)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[X=45S]
+************************
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   A[X=45S]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[I=1,,J=2]
+************************
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   A[I=1,,J=2]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[P=1]
+************************
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   A[P=1]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+f is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   A = FVZ.LONG_NAME[D=1]
+   in default dataset MY_UVAR_AGG
+   A = ..HISTORY[D=1]
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_date1900_array
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
+ 
+ 
+sh func/details date1900
+DATE1900(formatted date)
+    Convert date strings into Julian days since 1-Jan-1900
+        Axes of result:
+          X: inherited from argument(s)
+          Y: NORMAL (no axis)
+          Z: NORMAL (no axis)
+          T: NORMAL (no axis)
+          E: NORMAL (no axis)
+          F: NORMAL (no axis)
+    formatted date: dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00") (none) (STRING)
+        Influence on output axes:
+          X: passed to result grid
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+             VARIABLE : DATE1900("01-jan-2001")
+          36890.
+ 
+ 
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+             VARIABLE : DATE1900(DATESTRINGS)
+             SUBSET   : 3 points (X)
+ 1   / 1:  36890.
+ 2   / 2:  36891.
+ 3   / 3:  37465.
+ 
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+             VARIABLE : T
+                        axis TAXIS
+             SUBSET   : 3 points (TIME)
+ 01-JAN-2001 00 / 1:  36890.
+ 02-JAN-2001 00 / 2:  36891.
+ 30-JUL-2002 00 / 3:  37465.
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_spawn_size
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not
+! the nominalabstract axis length.
+ 
+! ticket 981
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+             VARIABLE : {SPAWN:"ls *cdf*.jnl"}
+             SUBSET   : 8 points (X)
+ 1   / 1:"bn_cdf_errmsg.jnl"      
+ 2   / 2:"bn_cdf.jnl"             
+ 3   / 3:"bn_cdf_keepax.jnl"      
+ 4   / 4:"bn_netcdf4.jnl"         
+ 5   / 5:"err490_cdf_childax.jnl" 
+ 6   / 6:"err491_cdf_childax.jnl" 
+ 7   / 7:"err65_read_epic_cdf.jnl"
+ 8   / 8:"err667_5d_netcdf.jnl"   
+say `files,return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+ !-> MESSAGE/CONTINUE 36
+36
+ 
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+ !-> MESSAGE/CONTINUE 3
+3
+list {spawn:"ls xml*.jnl"}
+             VARIABLE : {SPAWN:"ls xml*.jnl"}
+             SUBSET   : 3 points (X)
+ 1   / 1:"xml_header_script.jnl"
+ 2   / 2:"xml_use_coads.jnl"    
+ 3   / 3:"xml_use_numstring.jnl"
+ 
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
+ 
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+ !-> MESSAGE/CONTINUE 835
+835
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+GO bn_reset
+cancel mode verify
+GO bn_polygon_log
+! bn_polygon_log.jnl
+! polygon plots on a log axis need tests
+ 
+let xsqr = YSEQUENCE({0,.1,.1,0})
+let ysqr = YSEQUENCE({0,0,.1,.1})
+let xpts = cos(x/10) + 2
+let ypts = x/10+1
+ 
+! Polygon plot
+ 
+set view ul
+polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10
+ 
+! Poly/vlog and /hlog
+! (known bug: Whats up with the colorbar labels?)
+set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10
+set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10
+set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10
+ 
+! These are errors - log of negative values on axis
+ 
+set mode ignore
+ 
+let ybad = x/10 - 1
+let xbad = cos(x/10) + 0.8
+ 
+can view
+polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10
+ 
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+ 
+set mode/last ignore
+ 
+!  *********** Always do a bn_reset  ***********
+!  *********** make sure things clean up well **
+GO bn_reset
+cancel mode verify
+ 
+! version 2.3 requires exit/command *sh* 3/92
+exit/command
+yes? ! bn_all_ef_shell.jnl
+yes? ! 5/05 *acm*
+yes? ! run bn_all_ef tests
+yes? 
+yes? GO bn_all_ef
+ 	NOAA/PMEL TMAP
+ 	FERRET v6.93 (beta)
+ 	Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14
+ 	29-Oct-14 16:04     
+
+SET MODE VERIFY
+! bn_all_ef.jnl
+! - run all the benchmark tests for externally-linked external functions.
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_ef_external_functions.jnl
+! Tests of external functions that are distributed as shared object files.
+ 
+! Jon's benchmarks
+go bench_examples
+set mode ignore_error
+show func/ext add_9
+ADD_9(A,B,C,D,E,F,G,H,I)
+    (demonstration function) adds 9 arguments
+show func/ext ave*
+AVE_SCAT2GRID_T(TPTS,VPTS,TAXIS)
+    Compute average of a variable in each cell of output time axis
+    TPTS: T coordinates of scattered input time coordinates
+    VPTS: Variable at times in TPTS
+    TAXIS: Output time axis
+AVET(A)
+    (demonstration function) returns the time average
+    A: data to be averaged over the time axis
+show func pass_thru
+PASS_THRU(A)
+    (demonstration function) sets result equal to input
+    A: this arg is passed through
+show func sto*
+STORAGE(A)
+    sets result equal to input/10
+    A: input
+ 
+go bench_add_9
+! Bench_add_9.jnl
+!  ACM  8/99
+!  benchmark script for testing external function add_9.
+! Note: bench_add_9_visual contains plots of similar computations
+ 
+set mode ignore_errors
+ 
+ 
+can region
+use coads_climatology
+set region/x=151E:179E/y=0
+ 
+let a1 = sst[d=1,l=1]
+let a2 = sst[d=1,l=2]
+let a3 = sst[d=1,l=3]
+ 
+let a = add_9(a1,a2,a3,a1,a2,a3,a1,a2,a3)
+ 
+list a
+             VARIABLE : ADD_9(A1,A2,A3,A1,A2,A3,A1,A2,A3)
+             SUBSET   : 15 points (LONGITUDE)
+             LATITUDE : 1S
+             TIME     : 16-JAN 06:00
+                1S    
+                45
+ 151E   / 66:  263.6
+ 153E   / 67:  264.5
+ 155E   / 68:  264.2
+ 157E   / 69:  261.3
+ 159E   / 70:  260.9
+ 161E   / 71:  262.4
+ 163E   / 72:  264.0
+ 165E   / 73:  261.1
+ 167E   / 74:  260.9
+ 169E   / 75:  261.0
+ 171E   / 76:  259.3
+ 173E   / 77:  257.9
+ 175E   / 78:  257.0
+ 177E   / 79:  259.1
+ 179E   / 80:  254.8
+list  a - 3 * sst[d=1,l=1:3 at sum]
+             VARIABLE : A - 3 * SST[D=coads_climatology,L=1:3 at SUM]
+             SUBSET   : 15 points (LONGITUDE)
+             LATITUDE : 1S
+             TIME     : 16-JAN 06:00
+                 1S    
+                 45
+ 151E   / 66:  0.0000
+ 153E   / 67:  0.0000
+ 155E   / 68:  0.0000
+ 157E   / 69:  0.0000
+ 159E   / 70:  0.0000
+ 161E   / 71:  0.0000
+ 163E   / 72:  0.0000
+ 165E   / 73:  0.0000
+ 167E   / 74:  0.0000
+ 169E   / 75:  0.0000
+ 171E   / 76:  0.0000
+ 173E   / 77:  0.0000
+ 175E   / 78:  0.0000
+ 177E   / 79:  0.0000
+ 179E   / 80:  0.0000
+set mode/last ignore_errors
+go bench_avet
+! Bench_avet.jnl
+!  ACM  8/99
+!  benchmark script for testing external function avet.
+! Note: bench_avet_visual.jnl contains plots of similar computations
+ 
+set mode ignore_errors
+ 
+can region
+use coads_climatology
+set region/x=151E:179E/y=0
+ 
+let a = avet(sst)
+list a
+             VARIABLE : AVET(SST)
+             FILENAME : coads_climatology.cdf
+             SUBSET   : 15 points (LONGITUDE)
+             LATITUDE : 1S
+                1S    
+                45
+ 151E   / 66:  29.28
+ 153E   / 67:  29.39
+ 155E   / 68:  29.35
+ 157E   / 69:  29.03
+ 159E   / 70:  28.99
+ 161E   / 71:  29.15
+ 163E   / 72:  29.33
+ 165E   / 73:  29.01
+ 167E   / 74:  28.99
+ 169E   / 75:  29.00
+ 171E   / 76:  28.81
+ 173E   / 77:  28.66
+ 175E   / 78:  28.56
+ 177E   / 79:  28.79
+ 179E   / 80:  28.31
+list a - sst[l=@ave]
+             VARIABLE : A - SST[L=@AVE]
+             FILENAME : coads_climatology.cdf
+             SUBSET   : 15 points (LONGITUDE)
+             LATITUDE : 1S
+             TIME     : 01-JAN 00:45 to 01-APR 08:12
+                  1S      
+                  45
+ 151E   / 66:  0.000E+00
+ 153E   / 67: -3.553E-15
+ 155E   / 68:  0.000E+00
+ 157E   / 69:  0.000E+00
+ 159E   / 70:  3.553E-15
+ 161E   / 71:  7.105E-15
+ 163E   / 72:  3.553E-15
+ 165E   / 73:  0.000E+00
+ 167E   / 74:  0.000E+00
+ 169E   / 75:  3.553E-15
+ 171E   / 76:  0.000E+00
+ 173E   / 77:  3.553E-15
+ 175E   / 78:  0.000E+00
+ 177E   / 79:  3.553E-15
+ 179E   / 80:  3.553E-15
+ 
+can region
+let a = x[i=1:9,k=1:5] + t[l=1:5]
+let b = x[i=1:9,k=1:5]
+let c = avet(a)
+list b, c
+             X: 0.5 to 9.5
+ Column  1: B is X[I=1:9,K=1:5]
+ Column  2: C is AVET(A)
+             B     C
+1   / 1:  1.000   4.00
+2   / 2:  2.000   5.00
+3   / 3:  3.000   6.00
+4   / 4:  4.000   7.00
+5   / 5:  5.000   8.00
+6   / 6:  6.000   9.00
+7   / 7:  7.000  10.00
+8   / 8:  8.000  11.00
+9   / 9:  9.000  12.00
+ 
+set mode/last ignore_errors
+go bench_pass_thru
+! Bench_pass_thru.jnl
+!  ACM  8/99
+!  benchmark script for testing external function pass_thru.
+! Note: bench_pass_thru_visual.jnl contains plots of similar computations
+ 
+set mode ignore_errors
+ 
+can region
+let a = pass_thru(x)
+list a[i=1:20]
+             VARIABLE : PASS_THRU(X)
+             SUBSET   : 20 points (X)
+ 1    /  1:   1.00
+ 2    /  2:   2.00
+ 3    /  3:   3.00
+ 4    /  4:   4.00
+ 5    /  5:   5.00
+ 6    /  6:   6.00
+ 7    /  7:   7.00
+ 8    /  8:   8.00
+ 9    /  9:   9.00
+ 10   / 10:  10.00
+ 11   / 11:  11.00
+ 12   / 12:  12.00
+ 13   / 13:  13.00
+ 14   / 14:  14.00
+ 15   / 15:  15.00
+ 16   / 16:  16.00
+ 17   / 17:  17.00
+ 18   / 18:  18.00
+ 19   / 19:  19.00
+ 20   / 20:  20.00
+set region/i=1:20
+list sin(a)
+             VARIABLE : SIN(A)
+             SUBSET   : 20 points (X)
+ 1    /  1:  0.8415
+ 2    /  2:  0.9093
+ 3    /  3:  0.1411
+ 4    /  4: -0.7568
+ 5    /  5: -0.9589
+ 6    /  6: -0.2794
+ 7    /  7:  0.6570
+ 8    /  8:  0.9894
+ 9    /  9:  0.4121
+ 10   / 10: -0.5440
+ 11   / 11: -1.0000
+ 12   / 12: -0.5366
+ 13   / 13:  0.4202
+ 14   / 14:  0.9906
+ 15   / 15:  0.6503
+ 16   / 16: -0.2879
+ 17   / 17: -0.9614
+ 18   / 18: -0.7510
+ 19   / 19:  0.1499
+ 20   / 20:  0.9129
+can var/all
+can region
+ 
+use coads_climatology
+let a = pass_thru(sst[l=@ave,y=@sbx:11])
+list/x=50 a
+             VARIABLE : PASS_THRU(SST[L=@AVE,Y=@SBX:11])
+             FILENAME : coads_climatology.cdf
+             SUBSET   : 90 points (LATITUDE)
+             LONGITUDE: 49E
+             TIME     : 01-JAN 00:45 to 01-APR 08:12
+               49E   
+               15
+ 89N   / 90:   ....
+ 87N   / 89:   ....
+ 85N   / 88:   ....
+ 83N   / 87:   ....
  81N   / 86:   ....
  79N   / 85:   ....
  77N   / 84:   ....
@@ -77342,8 +79504,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969 ;
@@ -77367,8 +79529,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969, 50757974 ;
@@ -77391,8 +79553,8 @@ variables:
 		B:long_name = "\"one line of text\"" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -77430,8 +79592,8 @@ variables:
 		D:history = "From test_string" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  GFP3 = "" ;
@@ -77465,8 +79627,8 @@ variables:
 		B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_4 = 1, 2, 3, 4 ;
@@ -77506,8 +79668,8 @@ variables:
 		V:long_name = "T[GT=MONTH_IRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 
@@ -77563,8 +79725,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77620,8 +79782,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77675,8 +79837,8 @@ variables:
 		T2:long_name = "Z[GZ=ZIRR]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  ZIRR = 0, 10, 40, 70 ;
@@ -77723,8 +79885,8 @@ variables:
 		V:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_83 = 181, 183, 185 ;
@@ -77817,8 +79979,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77887,8 +80049,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77938,8 +80100,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -78013,8 +80175,8 @@ variables:
 		A:long_name = "T[GT=TIME]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 0.5, 2 ;
@@ -78040,8 +80202,8 @@ variables:
 		X_:long_name_mod = "axis ABSTRACT" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ;
 data:
 
@@ -78064,8 +80226,8 @@ variables:
 		A:history = "From x" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title, longer than the previous limit of 80 characters.  Previously various buffers were set to 80, and storage in ds_title was also too short." ;
 data:
 
@@ -78091,11 +80253,11 @@ variables:
 		A:history = "From t0_cdc" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_long_revision_num.jnl --- history attribute
-		:history = "FERRET V6.862   28-Mar-14" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
 bn_bounds_defineax.jnl --- N+1 def of bounds.
 netcdf irrxzt {
 dimensions:
@@ -78126,8 +80288,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -78198,8 +80360,8 @@ variables:
 		VAR_B:long_name = "my strings" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -78242,8 +80404,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX105_105 = 229 ;
@@ -78284,8 +80446,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -78392,8 +80554,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 6 after CANCEL MODE upcase_output
 netcdf a {
@@ -78433,8 +80595,8 @@ variables:
 		Elev:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 7 outtput flags to control attribute output
 netcdf a {
@@ -78456,8 +80618,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78482,8 +80644,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78502,8 +80664,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78523,8 +80685,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78566,8 +80728,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 12 Check that settings hold for child axis.
 netcdf a {
@@ -78606,8 +80768,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 13 cancel output of attributes of the variable.
 netcdf a {
@@ -78644,40 +80806,40 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 14 attributes of data from ez data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX042 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float A1(XAX1_5) ;
+	double AX042(AX042) ;
+		AX042:point_spacing = "even" ;
+		AX042:axis = "X" ;
+	float A1(AX042) ;
 		A1:missing_value = -1.e+34f ;
 		A1:_FillValue = -1.e+34f ;
 		A1:long_name = "A1" ;
 		A1:three = 1.f, 2.f, 3.f ;
 		A1:history = "From EZ.DAT" ;
-	float A2(XAX1_5) ;
+	float A2(AX042) ;
 		A2:missing_value = -1.e+34f ;
 		A2:_FillValue = -1.e+34f ;
 		A2:long_name = "A2" ;
 		A2:history = "From EZ.DAT" ;
-	float A3(XAX1_5) ;
+	float A3(AX042) ;
 		A3:missing_value = -1.e+34f ;
 		A3:_FillValue = -1.e+34f ;
 		A3:long_name = "A3" ;
 		A3:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX042 = 1, 2, 3, 4, 5 ;
 
  A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78688,29 +80850,29 @@ data:
 bn_attributes.jnl --- 15 attributes of data from delimited data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX009 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float V1(XAX1_5) ;
+	double AX009(AX009) ;
+		AX009:point_spacing = "even" ;
+		AX009:axis = "X" ;
+	float V1(AX009) ;
 		V1:missing_value = -1.e+34f ;
 		V1:_FillValue = -1.e+34f ;
 		V1:long_name = "V1" ;
 		V1:strval = "2" ;
 		V1:history = "From EZ.DAT" ;
-	float V4(XAX1_5) ;
+	float V4(AX009) ;
 		V4:missing_value = -1.e+34f ;
 		V4:_FillValue = -1.e+34f ;
 		V4:long_name = "V4" ;
 		V4:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX009 = 1, 2, 3, 4, 5 ;
 
  V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78732,8 +80894,8 @@ variables:
 		A:four = "theory" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -78778,8 +80940,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:simulation = "K-Bay OAR3d model (200m)" ;
 		:start_date = "980105000000" ;
 		:option = 0 ;
@@ -78885,8 +81047,8 @@ variables:
 		TEMP:units = "deg. C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:dt_internal = 15. ;
 }
 bn_attributes.jnl --- 19 scale and offset attr.
@@ -78927,8 +81089,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XC = -135.50957036625, -135.496120344706, -135.482670323162, 
@@ -79010,8 +81172,8 @@ variables:
 		RIGUE:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  J = 2, 4, 6 ;
@@ -79047,8 +81209,8 @@ variables:
 		B:long_name = "hello" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  B = 1 ;
@@ -79087,8 +81249,8 @@ variables:
 		VWND:units = "M/S" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -79138,8 +81300,8 @@ variables:
 		T2:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -79197,8 +81359,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79242,8 +81404,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79285,8 +81447,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79320,8 +81482,8 @@ variables:
 		TEMP:units = "DEG C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79354,8 +81516,8 @@ variables:
 		TWO:history = "From levitus_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 27 attributes of  user-defined axes
 netcdf string4d {
@@ -79384,8 +81546,8 @@ variables:
 		AXY:long_name = "RESHAPE (A,RVAR)" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 28 Define a new global attribute
 bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var
@@ -79413,8 +81575,8 @@ variables:
 		BROILED:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:glob = "Global attribute" ;
 		:FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ;
 data:
@@ -79474,8 +81636,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79519,8 +81681,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79538,8 +81700,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79568,8 +81730,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79598,8 +81760,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79651,8 +81813,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79693,8 +81855,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79711,18 +81873,18 @@ variables:
 		V:long_name = "Y[GY=YAXIS]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 err611_set_var_ez.jnl --- 
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_ASC(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_ASC(AX138) ;
 		MY_ASC:missing_value = 3.f ;
 		MY_ASC:_FillValue = 3.f ;
 		MY_ASC:long_name = "chlorophyll" ;
@@ -79730,17 +81892,17 @@ variables:
 		MY_ASC:history = "From dat.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_UNF(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_UNF(AX138) ;
 		MY_UNF:missing_value = 5.f ;
 		MY_UNF:_FillValue = 5.f ;
 		MY_UNF:long_name = "Some Unformatted input" ;
@@ -79748,8 +81910,8 @@ variables:
 		MY_UNF:history = "From unf.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- SET VAR/OUTTYPE for user variable
 netcdf a {
@@ -79765,8 +81927,8 @@ variables:
 		A:long_name = "{1.1,2.2,3.3}" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -79786,8 +81948,8 @@ variables:
 		A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
@@ -79797,50 +81959,51 @@ data:
 netcdf a {
 dimensions:
 	XAX1_10 = 10 ;
-	TDAY = UNLIMITED ; // (31 currently)
-	LON1_5 = 5 ;
-	LAT1_5 = 5 ;
+	tday = UNLIMITED ; // (31 currently)
+	lon1_5 = 5 ;
+	lat1_5 = 5 ;
 	bnds = 2 ;
-	ZT = 10 ;
-	TIME1478 = 3 ;
+	zt = 10 ;
+	time1478 = 3 ;
 variables:
 	double XAX1_10(XAX1_10) ;
 		XAX1_10:point_spacing = "even" ;
 		XAX1_10:axis = "X" ;
-	double TDAY(TDAY) ;
-		TDAY:units = "days since 1998-12-31 00:00:00" ;
-		TDAY:axis = "T" ;
-		TDAY:calendar = "GREGORIAN" ;
-		TDAY:time_origin = "31-DEC-1998" ;
-		TDAY:standard_name = "time" ;
-	double MyUpperLowerCaseVar(TDAY, XAX1_10) ;
+	double tday(tday) ;
+		tday:units = "days since 1998-12-31 00:00:00" ;
+		tday:axis = "T" ;
+		tday:calendar = "GREGORIAN" ;
+		tday:time_origin = "31-DEC-1998" ;
+		tday:standard_name = "time" ;
+	double MyUpperLowerCaseVar(tday, XAX1_10) ;
 		MyUpperLowerCaseVar:missing_value = -1.e+34 ;
 		MyUpperLowerCaseVar:_FillValue = -1.e+34 ;
 		MyUpperLowerCaseVar:long_name = "X[X=1:10] + T[GT=TDAY]" ;
-	double LON1_5(LON1_5) ;
-		LON1_5:point_spacing = "even" ;
-		LON1_5:axis = "X" ;
-		LON1_5:standard_name = "longitude" ;
-	double LAT1_5(LAT1_5) ;
-		LAT1_5:point_spacing = "uneven" ;
-		LAT1_5:axis = "Y" ;
-		LAT1_5:standard_name = "latitude" ;
-		LAT1_5:bounds = "LAT1_5_bnds" ;
-	double LAT1_5_bnds(LAT1_5, bnds) ;
-	float ZT(ZT) ;
-		ZT:units = "meters" ;
-		ZT:positive = "down" ;
-		ZT:point_spacing = "uneven" ;
-		ZT:axis = "Z" ;
-		ZT:standard_name = "depth" ;
-		ZT:bounds = "ZT_bnds" ;
-	float ZT_bnds(ZT, bnds) ;
-	double TIME1478(TIME1478) ;
-		TIME1478:calendar = "NOLEAP" ;
-		TIME1478:point_spacing = "even" ;
-		TIME1478:axis = "T" ;
-		TIME1478:standard_name = "time" ;
-	double newvar(TIME1478, ZT, LAT1_5, LON1_5) ;
+	double lon1_5(lon1_5) ;
+		lon1_5:point_spacing = "even" ;
+		lon1_5:axis = "X" ;
+		lon1_5:standard_name = "longitude" ;
+	double lat1_5(lat1_5) ;
+		lat1_5:point_spacing = "uneven" ;
+		lat1_5:axis = "Y" ;
+		lat1_5:standard_name = "latitude" ;
+		lat1_5:bounds = "lat1_5_bnds" ;
+	double lat1_5_bnds(lat1_5, bnds) ;
+	float zt(zt) ;
+		zt:long_name = "zt" ;
+		zt:units = "meters" ;
+		zt:positive = "down" ;
+		zt:point_spacing = "uneven" ;
+		zt:axis = "Z" ;
+		zt:standard_name = "depth" ;
+		zt:bounds = "zt_bnds" ;
+	float zt_bnds(zt, bnds) ;
+	double time1478(time1478) ;
+		time1478:calendar = "NOLEAP" ;
+		time1478:axis = "T" ;
+		time1478:point_spacing = "even" ;
+		time1478:standard_name = "time" ;
+	double newvar(time1478, zt, lat1_5, lon1_5) ;
 		newvar:missing_value = -999. ;
 		newvar:_FillValue = -999. ;
 		newvar:long_name = "outgoing longwave radiation" ;
@@ -79848,8 +82011,8 @@ variables:
 		newvar:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- test SAVE/KEEP_AXISNAMES
 netcdf a {
@@ -79875,8 +82038,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES
 netcdf a {
@@ -79902,8 +82065,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, degrees_east, degrees_north, std names on axes:
 netcdf a {
@@ -79968,8 +82131,8 @@ variables:
 		ZUP:long_name = "Z[GZ=ZAXUP]" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:
 netcdf a {
@@ -80000,8 +82163,8 @@ variables:
 		Y_:long_name_mod = "axis YFIFTEEN" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since
 netcdf a {
@@ -80033,8 +82196,8 @@ variables:
 		XYTVAR:history = "From bn_strides" ;
 
 // global attributes:
-		:history = "FERRET V6.862   28-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (beta) 29-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 -----
 end of ncdump output
@@ -80047,27 +82210,27 @@ yes?
 yes? 
 yes? GO bn_startupfile
  	NOAA/PMEL TMAP
- 	FERRET v6.862  
- 	Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14
- 	28-Mar-14 11:42     
+ 	FERRET v6.93 (beta)
+ 	Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14
+ 	29-Oct-14 16:04     
 
 CAN MODE VERIFY
- Current size of FERRET memory cache: 31 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 31 MegaWords  (1 word = 8 bytes)
 PPL$XPIXEL = "656"
 PPL$YPIXEL = "492"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.862"
-FERRET_PLATFORM = "Linux 2.6.32-431.5.1.el6.x86_64 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "31"
-SESSION_DATE = "28-Mar-14"
-SESSION_TIME = "11:42"
-SESSION_PID = "31005"
-DELTA_CPU = "0.040993"
-CLOCK_SECS = "0.304"
-CURRENT_DATE = "28-Mar-14"
-CURRENT_TIME = "11:42:09"
+SESSION_DATE = "29-Oct-14"
+SESSION_TIME = "16:04"
+SESSION_PID = "2382"
+DELTA_CPU = "0.070989"
+CLOCK_SECS = "0.418"
+CURRENT_DATE = "29-Oct-14"
+CURRENT_TIME = "16:04:39"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 LAST_GO_FILE = "./bn_startupfile.jnl"
@@ -80089,7 +82252,7 @@ PPL$VIEW_X = "0.000"
 PPL$VIEW_Y = "0.000"
 PPL$VIEW_Z = "0.000"
 PPL$COMMAND_FILE = "$$MEMBUF$$"
-WIN_TITLE = "28-Mar-14:11:42"
+WIN_TITLE = "29-Oct-14:16:04"
 VP_WIDTH = "10.2"
 VP_HEIGHT = "8.8"
 VP_SCALE = "1"
@@ -80151,9 +82314,9 @@ yes?
 yes? 
 yes? GO bn_gif
  	NOAA/PMEL TMAP
- 	FERRET v6.862  
- 	Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14
- 	28-Mar-14 11:42     
+ 	FERRET v6.93 (beta)
+ 	Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14
+ 	29-Oct-14 16:04     
 
 ! bn450_gif.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of gif file in batch mode using
@@ -80214,7 +82377,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= .gif                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     [...]
@@ -80370,9 +82533,9 @@ yes?
 yes? 
 yes? GO bn_ps
  	NOAA/PMEL TMAP
- 	FERRET v6.862  
- 	Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14
- 	28-Mar-14 11:42     
+ 	FERRET v6.93 (beta)
+ 	Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14
+ 	29-Oct-14 16:04     
 
 ! bn450_ps.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of ps files in batch mode using
@@ -80433,7 +82596,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.ps                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [...]
@@ -80484,9 +82647,9 @@ yes?
 yes? 
 yes? GO bn_batch_metafile
  	NOAA/PMEL TMAP
- 	FERRET v6.862  
- 	Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 03/28/14
- 	28-Mar-14 11:42     
+ 	FERRET v6.93 (beta)
+ 	Linux 2.6.32-504.el6.x86_64 64-bit - 10/29/14
+ 	29-Oct-14 16:04     
 
 ! bn_batch_metafile.jnl
 ! Run at the end of the benchmark scripts, starting ferret with the flags
@@ -80570,4 +82733,4 @@ set window/location=0.1,0.1/title="another title"
  
 set mode/last logo
 exit/command
-Ended at Fri Mar 28 11:42:11 PDT 2014
+Ended at Wed Oct 29 16:04:41 PDT 2014
diff --git a/bench/ansley_official.x86_64-linux_err b/bench/ansley_official.x86_64-linux_err
index 5a4e9e5..be314a6 100644
--- a/bench/ansley_official.x86_64-linux_err
+++ b/bench/ansley_official.x86_64-linux_err
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
 Running FERRET version /home/users/ansley/build/x86/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 53303709 Mar 26 15:36 /home/users/ansley/build/x86/FERRET/fer/ferret_c
+-rwxr-xr-x 1 ansley tmap 53365065 Oct  7 10:08 /home/users/ansley/build/x86/FERRET/fer/ferret_c
 Using external functions from /home/users/ansley/build/x86/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: fixing ticket 2161: redefine long_name or units for ascii-file var
+Note: ticket 2203
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -20,11 +20,10 @@ FER_LIBS=/home/users/tmap/ferret/x86_64-linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/x86_64-linux/ppl
 PWD=/home/users/ansley/build/x86/FERRET/bench
-Beginning at Wed Mar 26 15:37:53 PDT 2014
+Beginning at Tue Oct 7 10:41:47 PDT 2014
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
         SET EXPRESSION has not been given or implied
-        SET EXPRESSION has not been given or implied
  **ERROR: unknown command qualifier: help
 MESSAGE/CONTINUE /help
  **ERROR: unknown command: that
@@ -304,7 +303,7 @@ list temp[i=2:5,gx=130e:80w:10]
 list temp[gx=130e:80w]
  **ERROR: variable unknown or not in data set: NOEXIST
 list temp[gx=u]	+ noexist
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list temp[gx=u,k=30]
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -320,7 +319,7 @@ list tu
 list tu
  **ERROR: variable unknown or not in data set: NOEXIST
 list tu
- **ERROR: illegal limits: TEMP on grid (G003) does not exist at K=30
+ **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30
           Axis extremes are K=1:27
 list tu
  **ERROR: illegal limits: TEMP does not contain K=20
@@ -580,9 +579,10 @@ Replacing definition of axis XAX
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
- **ERROR: request exceeds memory setting: A negative number of words were requested.
+ **ERROR: request exceeds memory setting: 24000 Mwords were requested.
 load num
- *** NOTE: The current grid is most likely too large
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
@@ -845,6 +845,7 @@ Replacing definition of axis X10
  *** NOTE: Not deleted: X10
  *** NOTE: Axis is in use by grid G10X5
  PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
 
 Bailing out of external function "eof_space":
 	 Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE
@@ -854,7 +855,6 @@ Bailing out of external function "eof_stat":
 
 Bailing out of external function "eof_tfunc":
 	 Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC
- TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -1083,7 +1083,7 @@ Replacing definition of axis TAX2
  *** NOTE: regarding ./test_axes.nc ...
  *** NOTE: Climatological axes test_irreg, test_seas defined
  *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: XEVEN
  *** NOTE: Axis is in use by grid EVEN
  *** NOTE: Not deleted: XODD
@@ -1188,18 +1188,18 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
  *** NOTE: Axis is in use by grid GG1
+ *** NOTE: Not deleted: TEST_IRREG
+ *** NOTE: Axis is in use by grid (G023)
  *** NOTE: Not deleted: YAXLEVITR1_90
  *** NOTE: Axis is in use by grid GG2
- *** NOTE: Not deleted: TEST_IRREG
- *** NOTE: Axis is in use by grid (G022)
  *** NOTE: Not deleted: ZAXLEVITR1_1
  *** NOTE: Axis is in use by grid GG2
  *** NOTE: Not deleted: (AX020)
@@ -1308,10 +1308,10 @@ Replacing definition of axis TAX2
  *** NOTE: Axis is in use by grid GFORMAT
  *** NOTE: Not deleted: XAXLEVITR1_160
  *** NOTE: Axis is in use by grid GG1
- *** NOTE: Not deleted: TIME4
- *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: TIME5
  *** NOTE: Axis is in use by grid GLB1
+ *** NOTE: Not deleted: TIME4
+ *** NOTE: Axis is in use by grid GXYT
  *** NOTE: Not deleted: COADSX
  *** NOTE: Axis is in use by grid GG
  *** NOTE: Not deleted: COADSY
@@ -1679,15 +1679,15 @@ Replacing definition of grid TGRID
 def axis/t/cal=nogood/t=1-jan-2000:1-jan-2010:1/units=months tax
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: SOMETHING
+ *** NOTE: Units  not recognized: something
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized: ZORRO
+ *** NOTE: Units  not recognized: zorro
  *** NOTE: They will not be convertible:
- *** NOTE: Units  not recognized for T axis: METERS
+ *** NOTE: Units  not recognized for T axis: meters
  *** NOTE: They will not be convertible
- *** NOTE: Units  not recognized for Y axis: SECONDS
+ *** NOTE: Units  not recognized for Y axis: seconds
  *** NOTE: They will not be convertible
 Replacing definition of axis TAX
 Replacing definition of axis XAX
@@ -3519,11 +3519,19 @@ Replacing definition of axis ZAX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
  **ERROR: illegal limits: X axis limits don't match variable def'n: A
           Are you giving explicit limits when SET REGION would suffice ?
 list f
  *** NOTE: Not deleted: ENSEMBLE
- *** NOTE: Axis is in use by grid (G103)
+ *** NOTE: Axis is in use by grid (G089)
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3600,6 +3608,23 @@ shade b
  *** NOTE: Changing the value of attribute v1.units
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ **ERROR: attribute undefined or invalid attribute name: temp.noexist[d=levitus_climatology]
+          attribute noexist not found for variable TEMP
+show att temp.noexist[d=levitus_climatology]
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable temp exists in dataset
+set var/name=temp salt
+ **ERROR: invalid command: illegal new name.  Variable psi exists in dataset
+set var/name=psi myvar
+ **ERROR: invalid command: illegal new name.  Variable diff already defined
+set var/name=diff w
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
  *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another
  *** NOTE: Error in bounds "MONTH_IRREG_bnds" or bounds do not enclose point on axis MONTH_IRREG
  *** NOTE: Substituting coordinate midpoints
@@ -3610,6 +3635,154 @@ Replacing definition of axis TAX
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file b.nc
+ LISTing to file c.nc
+ **ERROR: invalid command: illegal new name. Axis days2000 is already defined
+set axis/name=days2000 x_in_meters
+ **ERROR: invalid command: illegal new name given for axis
+set axis/name x_in_meters
+ **ERROR: invalid command: illegal new name given for axis 45
+set axis/name=45 x_in_meters
+ **ERROR: invalid command: illegal new name given for axis .fr
+set axis/name=.fr x_in_meters
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING
+list tax_datestring (tt[L=3], tt, 5)
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR
+ *** NOTE: Substituting coordinate midpoints
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: command syntax: must be a constant COS(1)
+list {cos(1), sin(0)}
+ **ERROR: command syntax: must be a constant 0-180
+list {0-180, 180}
+ **ERROR: command syntax: must be a constant  1./5.
+list {0.1, 0.2, 1./5.}
+ **ERROR: command syntax: must be a constant 5*3+1
+list {5*3+1, 2+3}
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis TAX
+ LISTing to file tval.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file out.xml
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis XAXIS
+ **ERROR: request exceeds memory setting: 2369 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+Replacing definition of axis LONGTIME
+ **ERROR: request exceeds memory setting: 4735 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ LISTing to file aa.nc
+ LISTing to file bb.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file anew_global.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file conventions_history.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis X2
+Replacing definition of axis Y2
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
+ **ERROR: illegal limits: X axis limits don't match variable def'n: A
+          Are you giving explicit limits when SET REGION would suffice ?
+list f
+ *** NOTE: Not deleted: ENSEMBLE
+ *** NOTE: Axis is in use by grid (G091)
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
  **ERROR: command syntax: unknown region name: @w
 set region/@w
  PERMANENT data cleared from memory
@@ -3697,4 +3870,4 @@ vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j
 Re-defining viewport LM6
 Re-defining viewport UM6
  *** NOTE: Cannot create new windows when batch mode set
-Ended at Wed Mar 26 15:39:36 PDT 2014
+Ended at Tue Oct 7 10:44:14 PDT 2014
diff --git a/bench/ansley_official.x86_64-linux_log b/bench/ansley_official.x86_64-linux_log
index 984b35c..72dec23 100644
--- a/bench/ansley_official.x86_64-linux_log
+++ b/bench/ansley_official.x86_64-linux_log
@@ -1,10 +1,10 @@
 Procedure run_all to run all FERRET benchmarks
 Running FERRET version /home/users/ansley/build/x86/FERRET/fer/ferret_c
--rwxr-xr-x 1 ansley tmap 53303709 Mar 26 15:36 /home/users/ansley/build/x86/FERRET/fer/ferret_c
+-rwxr-xr-x 1 ansley tmap 53365065 Oct  7 10:08 /home/users/ansley/build/x86/FERRET/fer/ferret_c
 Using external functions from /home/users/ansley/build/x86/FERRET/external_functions/ext_func
 Running the tests of external functions y
 Benchmark run by ansley
-Note: fixing ticket 2161: redefine long_name or units for ascii-file var
+Note: ticket 2203
 ncdump output will be in all_ncdump.out, and appended to this log file 
 ***** Restricting Ferret paths to bench directory *****
 FER_DAT=.
@@ -20,7 +20,7 @@ FER_LIBS=/home/users/tmap/ferret/x86_64-linux/lib
 FER_LINK_DIR=/home/users/tmap/ferret_link/linux
 FER_PALETTE=. /home/users/tmap/ferret/x86_64-linux/ppl
 PWD=/home/users/ansley/build/x86/FERRET/bench
-Beginning at Wed Mar 26 15:37:53 PDT 2014
+Beginning at Tue Oct 7 10:41:47 PDT 2014
 ! BN500_ALL.JNL
 ! - run all the benchmark tests
 ! - ordered (more or less) from least to most complex
@@ -273,9 +273,9 @@ SHOW DATA/FULL
     1> ./snoopy.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:2       ...       ...       ...       ...       ...
+               on grid (G008) with -1.E+34 for missing data
+             X=-0.5:1.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -285,7 +285,7 @@ SHOW DATA
      currently SET data sets:
     1> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:2       ...       ...       ...       ...       ...
  
 SET MODE IGNORE_ERROR
 SET DATA/EZ/VAR="P,Q" 1
@@ -527,7 +527,7 @@ show mode journal
       JOURNAL          SET         newjournal.jnl
 set mode journal ferret.jnl
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -539,7 +539,7 @@ ppl list plot
 ppl listsym
 cancel mode ppllist
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -596,6 +596,8 @@ set mode metafile metafile.plt
  
 ! SET - SHOW - CANCEL EXPRESSION
 SHOW EXPRESSION
+        current output expression(s):
+        X[GX=1:0:1]
 CANCEL EXPRESSION
 SHOW EXPRESSION
 SET EXPRESSION i+5,i-j
@@ -794,19 +796,19 @@ SHOW VARIABLES
  
 ! SHOW MEMORY , LOAD
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/TEMPORARY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded without /PERMANENT:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
   105  /125W          50  /1.7N           1  /10             5  /13-SEP-1982  ...  / ...         ...  / ...
  
 SHOW MEMORY/PERMANENT
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded with /PERMANENT:
 SHOW MEMORY/ALL
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 all data in memory:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
@@ -816,9 +818,9 @@ all data in memory:
 LET A=i
 LOAD/PERM/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -832,9 +834,9 @@ SHOW MEMORY/FREE
             number of blocks used /PERM: 1
 LOAD/TEMPORARY/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -1404,8 +1406,8 @@ let x1 = 0.012954
 let x2 = 7.5E-09
 let x3 = .1
 say >>`x1`<< ---  >>`x2`<< --- >>`x3`<<
- !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
->>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
+ !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
+>>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
  
 ! must recognize "/" inside immediate mode exprn
 list/I=`6/2` i
@@ -1746,8 +1748,8 @@ show data
  
     2> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- T4       test4                            1:20480   ...       ...       ...       ...       ...
- T3       test3                            1:20480   ...       ...       ...       ...       ...
+ T4       test4                            1:2       ...       ...       ...       ...       ...
+ T3       test3                            1:2       ...       ...       ...       ...       ...
  
 show data/full 1
      currently SET data sets:
@@ -9617,9 +9619,9 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ V1       V1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9647,12 +9649,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
+ X2       X2                               1:5       ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9683,12 +9685,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9727,12 +9729,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9765,12 +9767,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9800,12 +9802,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0))
  /SKIP = 2
@@ -9838,12 +9840,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G007) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0)/)
  /SKIP = 1
@@ -10087,7 +10089,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -10266,6 +10268,7 @@ fill/nolabel/title="Orthographic View" masked_sst, x_page, y_page
 !
 !go mp_fland
 go mp_land
+pause
 go mp_label 237.7 47.6 -1 0 .1 @IISeattle
 go mp_label 204.4 19.5 -1 0 .1 @IIHawaii
 go mp_graticule
@@ -10446,18 +10449,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.925"
+FERRET_PLATFORM = "Linux 2.6.18-371.12.1.el5 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
-DELTA_CPU = "5.61515"
-CLOCK_SECS = "7.285"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:38:00"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
+DELTA_CPU = "6.08308"
+CLOCK_SECS = "12.483"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:41:59"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -10475,18 +10478,18 @@ show symbol/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.925"
+FERRET_PLATFORM = "Linux 2.6.18-371.12.1.el5 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
-DELTA_CPU = "0.001"
-CLOCK_SECS = "7.286"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:38:00"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
+DELTA_CPU = "9.99E-04"
+CLOCK_SECS = "12.483"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:41:59"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 S1 = "hello"
@@ -10496,9 +10499,9 @@ NUM = "3"
 T$DOLLAR = "hi"
 T_HELLO = "hi"
 show symbol s*
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
 S1 = "hello"
 S2 = ""hello""
 S3 = "hello and goodbye"
@@ -10508,15 +10511,15 @@ S2 = ""hello""
 ! exercise CANCEL SYMBOL
 cancel symbol s2
 show symbol s*
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
 S1 = "hello"
 S3 = "hello and goodbye"
 show symbol S*
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
 S1 = "hello"
 S3 = "hello and goodbye"
 cancel symbol s2	! already deleted
@@ -10550,9 +10553,9 @@ Q23456789012345678901234567XXXAAAAA = "6"
 ! show the upper left coordinate limits labels as symbols
 plot/i=1:100/y=10/z=5/set_up SIN(I/6)+Y+Z
 show symbol lab*
-LAB1 = "FERRET Ver. 6.861"
+LAB1 = "FERRET Ver. 6.925"
 LAB2 = "NOAA/PMEL TMAP"
-LAB3 = "26-MAR-2014 15:38:00"
+LAB3 = "07-OCT-2014 10:41:59"
 LABX = "X"
 LAB4 = "Y : 10"
 LABNUM_Y = "4"
@@ -10647,18 +10650,18 @@ show symbols/all
 PPL$XPIXEL = "406"
 PPL$YPIXEL = "406"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.925"
+FERRET_PLATFORM = "Linux 2.6.18-371.12.1.el5 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "24985"
-DELTA_CPU = "0.012998"
-CLOCK_SECS = "7.299"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:38:00"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+SESSION_PID = "14259"
+DELTA_CPU = "0.010999"
+CLOCK_SECS = "12.495"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:41:59"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -12353,7 +12356,7 @@ set region/l=1/k=1/i=101:105/j=46:50
 load temp[gx=u]
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12404,7 +12407,7 @@ Dynamic axes:
 list temp[gx=u,k=20]		! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12448,7 +12451,7 @@ list temp[gx=a]			! uvar for grid name
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12495,7 +12498,7 @@ let  tu = temp[gx=u,k=20]
 list tu				! err during read
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12526,7 +12529,7 @@ set mem/siz = 10
 list temp[gz=z999999,z=5:15]	! err during regrid
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12542,7 +12545,7 @@ set mem/siz=`save_mem`
 shade 1/0 * temp[gx=u]		! err during plot
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12574,7 +12577,7 @@ list temp[gx=psxu]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12616,7 +12619,7 @@ list temp[gx=u]
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12656,7 +12659,7 @@ list  temp[gx=psxu] + 5
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12682,7 +12685,7 @@ list  5 + temp[gx=psxu]
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12709,7 +12712,7 @@ list tu
  0.17N / 46:  23.9009  23.7946  23.7029  23.6527  23.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12720,7 +12723,7 @@ Dynamic grids:
 Dynamic axes:
     no implicit axes
 show grid tu
-    GRID (G003)
+    GRID (G004)
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12745,7 +12748,7 @@ list tu
  0.17N / 46:  28.9009  28.7946  28.7029  28.6527  28.6934
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12824,7 +12827,7 @@ list temp[gx=taux]		! X only
  0.17S / 45:  27.8727  27.7878  27.7232  27.6494  27.5563  27.4494
 show grid/dynamic
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
  PSXU      LONGITUDE          160mr   131E                 70W
  PSYT      LATITUDE           100 i   28.836S              48.568N
@@ -12935,7 +12938,7 @@ Dynamic axes:
 ! * * * dynamic generation of pseudo-variables * * *
 list x[x=.1:1:.1]			! dynamic abstract
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              SUBSET   : 10 points (X)
  0.1  /  1:  0.10000
  0.2  /  2:  0.20000
@@ -12949,7 +12952,7 @@ list x[x=.1:1:.1]			! dynamic abstract
  1    / 10:  1.00000
 list x[gx=psxu,x=130:150:2.5]		! dynamic based on named axis
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 9 points (LONGITUDE)
  130E   / 1:  130.000
  132.5E / 2:  132.500
@@ -13036,24 +13039,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX004)   Y                    3 r   95                   109
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   Y                    3 r   95                   109
  normal    Z
  normal    T
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    7 r   0.1                  9.1
- (AX003)   Y                   10 r   101                  110
+ (AX004)   X                    7 r   0.1                  9.1
+ (AX005)   Y                   10 r   101                  110
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   2
     AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   2
+    AXIS (AX005)                         use count:   1
  
 ! ambiguous coordinate tests
 list/order=x  x[x=0.1:10:1.5] +  x[x=1.1:11:1.5]
@@ -13071,16 +13074,16 @@ list/order=x a
            1.2000   4.2000   7.2000  10.2000  13.2000  16.2000  19.2000
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   2
+    GRID (G004)                          use count:   2
  name       axis              # pts   start                end
- (AX004)   X                    7 r   0.1                  9.1
+ (AX003)   X                    7 r   0.1                  9.1
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX004)                         use count:   1
+    AXIS (AX003)                         use count:   1
  
 ! box size on dynamic axes
 cancel region
@@ -13104,10 +13107,10 @@ let/quiet b = a[i=1:10:2]
 load b     ! "child" irregular axis
 show grid/x
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G003)
-    GRID (G003)
+ Last successful data access was on grid (G004)
+    GRID (G004)
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
@@ -13139,7 +13142,7 @@ list/i=1:10 x[gx=temp]			! from named variable
  139.5E / 10:  139.500
 list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX005)
+                        axis (AX001)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13153,7 +13156,7 @@ list x[g=temp,x=150w:130w:2.5]		! dynamic based on named variable
  130W   / 9:  230.000
 list x[gx=temp,x=150w:130w:2.5]		! dynamic based on named variable
              VARIABLE : X
-                        axis (AX003)
+                        axis (AX005)
              FILENAME : gtsa056_1.cdf
              SUBSET   : 9 points (LONGITUDE)
  150W   / 1:  210.000
@@ -13181,16 +13184,16 @@ list/i=101:105/j=46:50/l=1/k=1 temp+x	! grid inherited from expression
  0.17N / 46:  254.456  255.346  256.243  257.163  258.142
 show grid/dyn
 Dynamic grids:
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! this expression does NOT inherit the X axis -- the result is
 !	i) ambiguous X axis coordinates
@@ -13212,23 +13215,23 @@ show grid/dynamic
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            5 r   129.5W               113.5W
+ (AX003)   LONGITUDE            5 r   129.5W               113.5W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 list/j=46:50/l=1/k=1 temp[i=101:120:4]+x[g=temp,i=101:120:4]
              VARIABLE : TEMP[I=101:120:4]+X[G=TEMP,I=101:120:4]
@@ -13251,7 +13254,7 @@ SET REGION/I=101:105/J=46:50/l=1/k=1
 ! deliberate errors:  ****
 list x[i=5:1:1]		! not an error: inverted order
              VARIABLE : X
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 5 points (X)
  1   / 1:  1.00000
  2   / 2:  2.00000
@@ -13296,23 +13299,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX004)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
+ (AX003)   LONGITUDE            6 i   108.5W(-468.5)       98.5W(-458.5)
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! regular dynamic axis
 ! ... by subscript
@@ -13380,22 +13383,22 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX004)   LATITUDE             4 r   0.5S                 4N
+ (AX003)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
+    AXIS (AX003)                         use count:   1
     AXIS (AX004)                         use count:   1
-    AXIS (AX002)                         use count:   1
  
 ! ========
 ! 2/96: repeat the very same commands using GX=lo:hi:delta notation
@@ -13557,24 +13560,24 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
- (AX003)   LATITUDE             4 r   0.5S                 4N
+ (AX001)   LONGITUDE            4 r   130W                 121W
+ (AX005)   LATITUDE             4 r   0.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   X                    5 i   1                    6561
+ (AX004)   X                    5 i   1                    6561
  normal    Y
  normal    Z
  normal    T
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! the same tests but now on a nested definition
 ! regular dynamic axis
@@ -13742,23 +13745,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            6 r   138W                 113W
+ (AX005)   LONGITUDE            6 r   138W                 113W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            4 r   130W                 121W
+ (AX001)   LONGITUDE            4 r   130W                 121W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX003)                         use count:   1
     AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
  
 ! irregular dynamic axis
 ! ... by subscript
@@ -13896,23 +13899,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX005)   LONGITUDE            8 r   90W                  62W
+ (AX001)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
  PSXT      LONGITUDE          160mr   130.5E               70.5W
- (AX002)   LATITUDE             6 r   3.5S                 4N
+ (AX004)   LATITUDE             6 r   3.5S                 4N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
-    AXIS (AX002)                         use count:   1
+    AXIS (AX001)                         use count:   1
+    AXIS (AX004)                         use count:   1
  
 ! nested modulo (the dynamic axis is **NOT** modulo)
 ! ... by subscript
@@ -14094,23 +14097,23 @@ show grid/dyn
 Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
- (AX002)   LONGITUDE            9 r   101W                 53W
+ (AX004)   LONGITUDE            9 r   101W                 53W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
-    GRID (G003)                          use count:   1
+    GRID (G004)                          use count:   1
  name       axis              # pts   start                end
- (AX003)   LONGITUDE            8 r   90W                  62W
+ (AX005)   LONGITUDE            8 r   90W                  62W
  PSYT      LATITUDE           100 i   28.836S              48.568N
  PSZT      DEPTH (m)           27 i-  5                    3824
  TIME2     TIME                 5mr   15-JAN-1982 14:00    27-JAN-1982 18:00
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX002)                         use count:   1
-    AXIS (AX003)                         use count:   1
+    AXIS (AX004)                         use count:   1
+    AXIS (AX005)                         use count:   1
  
 ! calendar axes
 list/k=1/y=0/x=180 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]   ! 6-day ave
@@ -14142,7 +14145,7 @@ list/k=1/y=0/x=180/l=1 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave]
 list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:`24*2`]			! pseudo-var
  !-> list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:48]			! pseudo-var
              VARIABLE : T
-                        axis (AX004)
+                        axis (AX003)
              SUBSET   : 3 points (TIME)
  15-JAN-1982 00 / 1:  723925.
  17-JAN-1982 00 / 2:  723927.
@@ -14754,7 +14757,7 @@ show data/full
                on grid G016_NYZ with -1.E+34 for missing data
              X=130E:140E  
  JK       J1+K1                            ...       5:10      5:15      ...       ...       ...
-               on grid G007_NXT with -1.E+34 for missing data
+               on grid G008_NXT with -1.E+34 for missing data
              Y=21.11S:12.52S  Z=40:190  
  IJK      TEMP[L=@AVE]                    70:72      1:100     1:27      ...       ...       ...
        (T=15-MAR-1983 09:30:15-MAR-1983 11:30)
@@ -17826,10 +17829,10 @@ list a2[gx=xoffset at ave, gy=yoffset at ave]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17862,10 +17865,10 @@ list a2[gx=xoffset at sum, gy=yoffset at sum] ! should sum to 10+11+11+12=44
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:297 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:298 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:298 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -17899,10 +17902,10 @@ list a2[gx=xoffset at var, gy=yoffset at var]
  eval    A2       C:  8 dset:   0 I:    1    2  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE Y        M:298 dset:   0 I: -999 -999  J:    1    2  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          NORMAL    Y2PT      NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE X        M:297 dset:   0 I:    1    2  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X2PT      NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A2       M:297 dset:   0 I:    1    2  J:    1    7  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -18100,18 +18103,18 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
- strip regrid on X: A5 --> (G008)           @MAX
+ allocate dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ strip regrid on X: A5 --> (G002)           @MAX
  eval    A5       C:  7 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  allocate dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  pseudo  X        M:298 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  regrid  A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : X[GX=X5_EDGES]
                         regrid: 1 delta on X at MAX
              SUBSET   : 5 points (X)
@@ -18121,7 +18124,7 @@ list a5[gx=x5 at max]   ! note: top dest axis point, only, looks at point above
  4   / 4:  3.50000
  5   / 5:  5.50000
 let a5 = x[gx=x5_edges, i=3]
- dealloc  dynamic grid (G008)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          X5        NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE A5       M:297 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A5       M:299 dset:   0 I:    1    6  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid (G010)          X5_EDGES  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -25628,7 +25631,7 @@ GO err491_spawn_quotes.jnl
  
 ! this should be a valid command
 SPAWN "date"
-Wed Mar 26 15:38:06 PDT 2014
+Tue Oct  7 10:42:09 PDT 2014
  
 GO bn_reset
 cancel mode verify
@@ -25755,7 +25758,7 @@ list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50})
  1N   / 46:  29.1373  28.9243  28.3264
  1S   / 45:  28.8965  28.8240  28.5357
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -26252,7 +26255,7 @@ Dynamic grids:
     GRID (G017)                          use count:   2
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26260,13 +26263,13 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX001)   LATITUDE             5 r   1S                   1N
+ (AX002)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX001)                         use count:   2
+    AXIS (AX002)                         use count:   2
 cancel memory/all
 let/quiet a = sst[l=1,y=1s:1n:.5]
 list SAMPLEI(a,{30,40,50})
@@ -26286,7 +26289,7 @@ Dynamic grids:
     GRID (G006)                          use count:   1
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -26294,13 +26297,13 @@ Dynamic grids:
     GRID (G017)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE             5 r   1S                   1N
+ (AX001)   LATITUDE             5 r   1S                   1N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   2
+    AXIS (AX001)                         use count:   2
  
 ! sampling a pseudo-variable
 list SAMPLEI(X[x=1:12],{3,4,7,15})
@@ -26457,9 +26460,9 @@ list SAMPLEI(Y[y=110:200:10],{3,4,7})
 cancel memory/all
 set mode diagnostic
 list SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48})
- dealloc  dynamic grid (G017)          NORMAL    (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G006)          ABSTRACT  (AX001)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G017)          NORMAL    (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G006)          ABSTRACT  (AX002)   NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C01,V02 C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid (C09,V02 C: 10 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -26562,7 +26565,7 @@ list a 			!   <-- CACHE HIT FAILS!!!
 set mode/last diagnostic
  
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -29157,15 +29160,15 @@ stat $1[gx=xtrop]
  !-> stat sst[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 52 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29184,7 +29187,7 @@ stat $1[gx=xtrop]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 49 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29197,15 +29200,15 @@ stat $1[gx=xtrop]
  -DELETE I        M: 49 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 49 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29228,21 +29231,21 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sstx = sst[gx=xtrop]
 stat $1x
  !-> stat sstx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 27 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SSTX     C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 27 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29260,7 +29263,7 @@ stat $1x
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -29272,14 +29275,14 @@ stat $1x
  -DELETE I        M: 44 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SSTX     C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 44 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -29298,24 +29301,24 @@ stat $1x
  Standard deviation: 9.8848
  
 define grid/x=xtrop gx
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SSTX     M: 40 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SSTX     M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST      M: 47 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
 stat $1[g=gx]
  !-> stat sst[g=gx]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 47 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29334,7 +29337,7 @@ stat $1[g=gx]
  Mean    value: 17.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 43 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29347,15 +29350,15 @@ stat $1[g=gx]
  -DELETE I        M: 43 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 43 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X
@@ -29377,19 +29380,19 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 46 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 46 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29408,7 +29411,7 @@ stat $1[gx=xtrop,gy=ytrop]
  Mean    value: 26.908 (unweighted average)
  Standard deviation: 1.778
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 40 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -29421,16 +29424,16 @@ stat $1[gx=xtrop,gy=ytrop]
  -DELETE I        M: 40 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST --> (G002)           @LIN
  reading SST      M: 40 dset:   1 I:   55  131  J:   35   56  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid XY
  regrid  SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  
              SEA SURFACE TEMPERATURE
              regrid: 1 deg on X, 1 deg on Y
@@ -29451,7 +29454,7 @@ stat $1[gx=xtrop,gy=ytrop]
  
 define grid/like=$1/x=xtrop/y=ytrop gxyt
  !-> define grid/like=sst/x=xtrop/y=ytrop gxyt
- dealloc  dynamic grid (G008)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST      M: 39 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
@@ -29989,18 +29992,18 @@ stat $1[gx=xtrop]
  !-> stat sst5[gx=xtrop]
  dealloc  dynamic grid GSQ1            COADSX    COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 50 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 42 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30019,7 +30022,7 @@ stat $1[gx=xtrop]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 42 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
@@ -30032,18 +30035,18 @@ stat $1[gx=xtrop]
  -DELETE I        M: 42 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 42 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 45 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30066,24 +30069,24 @@ let $1x = $1[gx=xtrop]
  !-> DEFINE VARIABLE sst5x = sst5[gx=xtrop]
 stat $1x
  !-> stat sst5x
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 45 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid SST5X    C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 45 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 58 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30101,7 +30104,7 @@ stat $1x
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30113,17 +30116,17 @@ stat $1x
  -DELETE I        M: 61 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  eval    SST5X    C:  6 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  9 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 61 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 62 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST5[GX=XTROP]
              LONGITUDE: 129.5E to 79.5W
@@ -30144,20 +30147,20 @@ stat $1x
 define grid/x=xtrop gx
 stat $1[g=gx]
  !-> stat sst5[g=gx]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 65 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 66 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30176,7 +30179,7 @@ stat $1[g=gx]
  Mean    value: 22.605 (unweighted average)
  Standard deviation: 9.8848
 CONFUSE
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -30188,18 +30191,18 @@ stat $1[g=gx]
  -DELETE I        M: 68 dset:   0 I:    1    5  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
- strip regrid on X: SST5 --> (G008)           @LIN
+ allocate dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ strip regrid on X: SST5 --> (G002)           @LIN
  eval    SST5     C:  7 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  reading SST      M: 68 dset:   1 I:   55  131  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  constan cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE cnst     M: 69 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  regrid  SST5     M: 69 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  
              SST+5
              regrid: 1 deg on X
@@ -30221,7 +30224,7 @@ stat $1[g=gx]
 define axis/y=20s:20n:1 ytrop
 stat $1[gx=xtrop,gy=ytrop]
  !-> stat sst5[gx=xtrop,gy=ytrop]
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I:    1  151  J:    1   41  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  strip regrid on X: SST5 --> GXYT             @LIN
@@ -30439,7 +30442,7 @@ let $1xyt = $1[g=gxyt]
  dealloc  dynamic grid GXYT            XTROP     YTROP     NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5X    M: 60 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5X    M: 64 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XTROP     COADSY    NORMAL    TIME4     NORMAL    NORMAL
  -DELETE SST5     M: 58 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 62 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE SST5     M: 66 dset:   1 I:    1  151  J:    1   90  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31040,7 +31043,7 @@ say `a,return=isize`
  getgrid (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  dealloc  dynamic grid ABSTRACT        ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT  ABSTRACT
  pass #2 (C09,V11 C: 12 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
@@ -31164,7 +31167,7 @@ cancel mode verify
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C09,V11 M: 79 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C09,V11 M: 90 dset:   0 I:    1    3  J:    1    3  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          ABSTRACT  ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL
  -DELETE (C01,V11 M: 84 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE (C01,V11 M: 93 dset:   0 I:    1    9  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  dealloc  dynamic grid XABSTRACT       ABSTRACT  NORMAL    NORMAL    NORMAL    NORMAL    NORMAL
@@ -31388,7 +31391,7 @@ show grid
     GRID (G012)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31398,7 +31401,7 @@ Dynamic grids:
     GRID (G012)                          use count:   1
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE           201 r   10S                  10N
+ (AX001)   LATITUDE           201 r   10S                  10N
  normal    Z
  TIME4     TIME                 3mr   16-JAN 06:00         17-MAR 02:58
  normal    E
@@ -31412,7 +31415,7 @@ Dynamic grids:
  normal    E
  normal    F
 Dynamic axes:
-    AXIS (AX005)                         use count:   1
+    AXIS (AX001)                         use count:   1
     AXIS (AX012)                         use count:   1
     AXIS (AX020)                         use count:   1
  
@@ -31532,7 +31535,7 @@ SHOW GRID temp[d=2,gx=sst[d=1],y=10s:2s:.2]             ! implicit Y axis
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31541,7 +31544,7 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5"
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31550,7 +31553,7 @@ SHOW GRID FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]) ! imposed T axis
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
@@ -31559,7 +31562,7 @@ SHOW GRID SORTI(temp[d=2,gx=sst[d=1],y=10s:2s:.2])      ! abstract X axis
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31576,15 +31579,15 @@ SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5",FFTA(sst[d=1,gx=temp[d=2],y=10
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
- (AX005)   T (CYC/hour)         2 r   0.00034224           0.00068448
+ (AX001)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
     GRID (G018)
  name       axis              # pts   start                end
  ABSTRACT  X             99999999 r   1                    1.E+08
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31597,7 +31600,7 @@ SHOW GRID
     GRID (G018)
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX005)   LATITUDE            41 r   10S                  2S
+ (AX001)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31609,14 +31612,14 @@ SHOW GRID
     GRID (G011)
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 list/j=1:5 j
              VARIABLE : J
-                        axis (AX002)
+                        axis (AX004)
              SUBSET   : 5 points (LATITUDE)
  9.2S   / 5:  5.00000
  9.4S   / 4:  4.00000
@@ -31628,7 +31631,7 @@ SHOW GRID MYGRID
     GRID MYGRID
  name       axis              # pts   start                end
  COADSX    LONGITUDE          180mr   21E                  19E(379)
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  ZAXLEVITR1_1 DEPTH (m)         1 r-  0                    0
  normal    T
  normal    E
@@ -31638,14 +31641,14 @@ Dynamic grids:
     GRID (G011)                          use count:   1
  name       axis              # pts   start                end
  XAXLEVITR1_160 LONGITUDE     160mr   20.5E                179.5E
- (AX002)   LATITUDE            41 r   10S                  2S
+ (AX004)   LATITUDE            41 r   10S                  2S
  normal    Z
  (AX011)   T (CYC/hour)         2 r   0.00034224           0.00068448
  normal    E
  normal    F
 Dynamic axes:
     AXIS (AX011)                         use count:   1
-    AXIS (AX002)                         use count:   2
+    AXIS (AX004)                         use count:   2
     AXIS (AX020)                         use count:   1
  
  
@@ -34068,9 +34071,6 @@ SORTN(DAT)
 SORTN_STR(STR)
     Returns indices of string data, sorted on the N axis in increasing order, null strings at the end
     STR: String variable to sort in N (STRING)
-SORTI_STR(DAT)
-    Returns indices of string data, sorted on the I axis in increasing order
-    DAT: String variable to sort in I (STRING)
 sh func/ext sample*
 SAMPLEI(TO_BE_SAMPLED,X_INDICES)
     sample a field at a list of X indices
@@ -34179,28 +34179,10 @@ SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
     XPTS: X values of sample points
     YPTS: Y values of sample points
     TPTS: T values of sample points
-SAMPLEI_MULTI(I_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to I indices which may vary in JKL
-    I_INDICES: indices upon which to sample
-    DAT_TO_SAMPLE: data to sample using I indices
-SAMPLEJ_MULTI(J_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to J indices which may vary in IKL
-    J_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using J indices
-SAMPLEK_MULTI(K_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to K indices which may vary in IJL
-    K_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using K indices
-SAMPLEL_MULTI(L_INDICES,DAT_TO_SAMPLE)
-    Returns data sampled according to L indices which may vary in IJK
-    L_INDICES: ordered indices
-    DAT_TO_SAMPLE: data to sample using L indices
-SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
-    Returns data sampled at a set of (X,Y,T) points, using nearest grid intersection
-    DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample
-    XPTS: X values of sample points
-    YPTS: Y values of sample points
-    TPTS: T values of sample points
+SAMPLE_FAST_I(V,Indices)
+    Fast 1D sample variable using set of indices
+    V: Variable to sample
+    Indices: List of indices at which to sample
  
 go bench_sorti.jnl
  
@@ -36890,56 +36872,56 @@ show data/var
     1> ./bn_delimited_read_1.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V2       V2                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V3       V3                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V4       V4                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V5       V5                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V6       V6                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V7       V7                               1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V8       V8                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V9       V9                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V10      V10                              1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G023) with -1.E+34 for missing data
+             X=0.5:7.5  
  
  /DELIMITERS="\t,\,"
 list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
@@ -37038,11 +37020,11 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_1.dat  (default)
  name     title                             I         J         K         L         M         N
- A1       A1                               1:20480   ...       ...       ...       ...       ...
- A2       A2                               1:20480   ...       ...       ...       ...       ...
- A3       A3                               1:20480   ...       ...       ...       ...       ...
- A4       A4                               1:20480   ...       ...       ...       ...       ...
- A5       A5                               1:20480   ...       ...       ...       ...       ...
+ A1       A1                               1:7       ...       ...       ...       ...       ...
+ A2       A2                               1:7       ...       ...       ...       ...       ...
+ A3       A3                               1:7       ...       ...       ...       ...       ...
+ A4       A4                               1:7       ...       ...       ...       ...       ...
+ A5       A5                               1:7       ...       ...       ...       ...       ...
  
 list a1,a2,a3,a4,a5
              DATA SET: ./bn_delimited_read_1.dat
@@ -37150,18 +37132,18 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
  
 file/form=delimited/delimiter=" " bn_delimited_read_2.dat
 show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+ V2       V2                               1:3       ...       ...       ...       ...       ...
        (Time of day)
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+ V3       V3                               1:3       ...       ...       ...       ...       ...
        (all values missing)
  
 list v1,v2
@@ -37462,367 +37444,367 @@ show data/full
     1> ./bn_delimited_read_CO2.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V2       V2                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V3       V3                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V4       V4                               1:20      ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
             Data type = NUMERIC
             Conversion /TYPE=DATE
-             days on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+             days on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V5       V5                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V6       V6                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V7       V7                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V8       V8                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V9       V9                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V10      V10                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V11      V11                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V11      V11                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V12      V12                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V12      V12                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V13      V13                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V13      V13                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V14      V14                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V14      V14                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V15      V15                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V15      V15                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V16      V16                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V16      V16                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V17      V17                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V17      V17                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V18      V18                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V18      V18                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V19      V19                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V19      V19                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V20      V20                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V20      V20                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V21      V21                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V21      V21                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V22      V22                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V22      V22                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V23      V23                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V23      V23                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V24      V24                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V24      V24                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V25      V25                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V25      V25                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V26      V26                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V26      V26                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V27      V27                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V27      V27                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V28      V28                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V28      V28                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V29      V29                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V29      V29                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V30      V30                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V30      V30                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V31      V31                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V31      V31                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V32      V32                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V32      V32                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V33      V33                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V33      V33                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V34      V34                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V34      V34                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V35      V35                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V35      V35                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V36      V36                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V36      V36                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V37      V37                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V37      V37                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V38      V38                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V38      V38                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V39      V39                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V39      V39                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V40      V40                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V40      V40                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V41      V41                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V41      V41                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V42      V42                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V42      V42                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V43      V43                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V43      V43                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V44      V44                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V44      V44                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V45      V45                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V45      V45                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V46      V46                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V46      V46                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V47      V47                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V47      V47                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V48      V48                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V48      V48                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V49      V49                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V49      V49                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V50      V50                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V50      V50                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V51      V51                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V51      V51                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V52      V52                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V52      V52                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V53      V53                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V53      V53                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V54      V54                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V54      V54                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V55      V55                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V55      V55                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V56      V56                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V56      V56                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V57      V57                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V57      V57                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V58      V58                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V58      V58                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V59      V59                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V59      V59                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V60      V60                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V60      V60                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V61      V61                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V61      V61                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V62      V62                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V62      V62                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V63      V63                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V63      V63                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V64      V64                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V64      V64                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V65      V65                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V65      V65                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V66      V66                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V66      V66                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V67      V67                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V67      V67                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V68      V68                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V68      V68                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V69      V69                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V69      V69                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V70      V70                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V70      V70                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V71      V71                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V71      V71                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
- V72      V72                              1:20480   ...       ...       ...       ...       ...
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V72      V72                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20481  
+               on grid (G022) with -1.E+34 for missing data
+             X=0.5:20.5  
  
  /DELIMITERS="\t,\,"
  /FORMAT = DELIMITED
@@ -38366,7 +38348,7 @@ set mode stupid
 set mode diag
 set mem/size=0.05
 show mem/free
- Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 100
@@ -38380,11 +38362,11 @@ show mem/free
 use/ord=x-y test_100x100.nc
 list/prec=1 a[i=1:100:10] !  this looks just right!!
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38392,7 +38374,7 @@ list/prec=1 a[i=1:100:10] !  this looks just right!!
  -DELETE A        M:  1 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  1 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
              VARIABLE : IF I EQ J THEN 1 ELSE A0
                         regrid: 10 delta on X
              FILENAME : test_100x100.nc
@@ -38504,7 +38486,7 @@ show grid
  Last successful data access was on grid (G005)
     GRID (G005)
  name       axis              # pts   start                end
- (AX010)   X                   10 r   1                    91
+ (AX017)   X                   10 r   1                    91
  YAX1_100  Y                  100 r   1                    100
  normal    Z
  normal    T
@@ -38514,7 +38496,7 @@ show grid
 ! should be a diagonal path of steps all the way across the plot
 shade a[i=1:100:10]
  eval    EX#1     C:  4 dset:   1 I:    1  100  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ allocate dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
  strip regrid on X: A --> (G005)           @XACT
  strip reversing A on Y axis:     1   100 dset:   1
  rdstride A        C:  8 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
@@ -38522,7 +38504,7 @@ shade a[i=1:100:10]
  -DELETE A        M:  2 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  nulrgd  A        M:  2 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
  -DELETE A        M:  3 dset:   1 I:    1   91  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G005)          (AX010)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
+ dealloc  dynamic grid (G005)          (AX017)   YAX1_100  NORMAL    NORMAL    NORMAL    NORMAL
 setting up 2D plot
  -DELETE A        M:  3 dset:   1 I:    1   10  J:    1  100  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
 PPL plot 279  complete
@@ -39961,37 +39943,37 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ3            XAX_SUBSPANORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
- strip regrid on X: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ strip regrid on X: V2D_REG --> (G002)           @XACT
  found   V2D_REG  M: 69 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_REG  M: 70 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX004)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  13.0000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_reg[i=1,l=1:15:2]
- dealloc  dynamic grid (G008)          (AX017)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
+ dealloc  dynamic grid (G002)          (AX014)   NORMAL    NORMAL    TAX_SUBSPANORMAL    NORMAL
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
- strip regrid on T: V2D_REG --> (G008)           @XACT
+ allocate dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
+ strip regrid on T: V2D_REG --> (G002)           @XACT
  strip moduloing V2D_REG on T axis:     1    15 dset:   1
  rdstride V2D_REG  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  doing moduloing V2D_REG on T axis:     1     5 dset:   1
  -DELETE V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_REG  M: 71 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_REG  M: 72 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G008)          XAX_SUBSPANORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G002)          XAX_SUBSPANORMAL    NORMAL    (AX004)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  16-MAR-0000 / 2:   71.000
  15-MAY-0000 / 3:  131.000
@@ -40490,29 +40472,29 @@ set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:2]
  dealloc  dynamic grid GFJ4            XIRREG_SUBNORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ allocate dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  strip regrid on X: V2D_IRR --> (G018)           @XACT
  found   V2D_IRR  M:146 dset:   1 I:    0   14  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  regrid  V2D_IRR  M:147 dset:   1 I:    1    8  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX014)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
              ....  12.0000  14.0000  16.0000  11.0000  12.1000  15.0000     ....
 l200n/order=x $2[l=1,i=0:14:7]
  !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:7]
         ............
 set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  !-> list/width=200/nohead v2d_irr[i=1,l=1:15:2]
- dealloc  dynamic grid (G018)          (AX010)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
+ dealloc  dynamic grid (G018)          (AX017)   NORMAL    NORMAL    TIRREG_SUBNORMAL    NORMAL
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    3  J: -999 -999  K: -999 -999  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
- allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ allocate dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  strip regrid on T: V2D_IRR --> (G018)           @XACT
  strip moduloing V2D_IRR on T axis:     1    15 dset:   1
  rdstride V2D_IRR  C:  9 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
@@ -40520,7 +40502,7 @@ set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag
  -DELETE V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    5  M: -999 -999  N: -999 -999
  nulrgd  V2D_IRR  M:148 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1    8  M: -999 -999  N: -999 -999
  -DELETE V2D_IRR  M:149 dset:   1 I:    1    1  J: -999 -999  K: -999 -999  L:    1   15  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX017)   NORMAL    NORMAL
+ dealloc  dynamic grid (G018)          XIRREG_SUBNORMAL    NORMAL    (AX014)   NORMAL    NORMAL
  16-JAN-0000 / 1:   11.000
  15-MAR-0000 / 2:   70.249
  15-MAY-0000 / 3:  131.249
@@ -44858,52 +44840,52 @@ let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:146 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 can mem/all
  -DELETE A        M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  
 def grid/like=taux agrid
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
  getgrid EX#1     C:  6 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
 set mode diag
 let a = taux[i=50:55:2,j=44:50:3,l=1:168:8]
  dealloc  dynamic grid PS2DU1          PSXU      PSYU      NORMAL    TIME6     NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX023)   (AX022)   NORMAL    (AX025)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX001)   (AX023)   NORMAL    (AX025)   NORMAL    NORMAL
 load a
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  getgrid A        C:  7 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  eval    A        C:  6 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
- allocate dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- strip regrid on X: TAUX --> (G023)           @XACT
+ allocate dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ strip regrid on X: TAUX --> (G022)           @XACT
  rdstride TAUX     C:  9 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
  nulrgd  TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE TAUX     M:151 dset:   1 I:   50   54  J:   44   50  K: -999 -999  L:    1  161  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 can mem/all
  -DELETE TAUX     M:146 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
  -DELETE A        M:151 dset:   1 I:    1    3  J:    1    3  K: -999 -999  L:    1   21  M: -999 -999  N: -999 -999
 can data/all
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
- dealloc  dynamic grid (G023)          (AX022)   (AX023)   NORMAL    (AX009)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
+ dealloc  dynamic grid (G022)          (AX023)   (AX001)   NORMAL    (AX016)   NORMAL    NORMAL
  
 ! Some tests taken from  bn_strides_revs_perms.jnl but with
 ! DEFINE GRID/LIKE= testing permuting and reversing axes
@@ -44971,16 +44953,16 @@ LIST VAR[i=2:4:2,j=1:3:2]
  dealloc  dynamic grid (G014)          (AX040)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    2    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:146 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -45001,19 +44983,19 @@ CANC MEM/ALL
 ! modulo requests cannot use strides (as this example shows)
 set axis/modulo XAX1_4
 LIST VAR[I=1:10:3,j=1,k=1,l=1]    ! 1, 4, 7(3), 10(2)
- dealloc  dynamic grid (G014)          (AX005)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   (AX041)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  strip moduloing VAR on X axis:     1    10 dset:   1
  reading VAR      M:151 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  doing moduloing VAR on X axis:     1     4 dset:   1
  regrid  VAR      M:147 dset:   1 I:    1    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 3 delta on X
              FILENAME : bn_strides.cdf
@@ -45034,7 +45016,7 @@ cancel axis/modulo XAX1_4
  
 ! strides applied to more than one axis need special attention in IS_REGRID
 LIST VAR[i=2:4:2,j=1:3:2]
- dealloc  dynamic grid (G014)          (AX005)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX009)   YAX1_3    ZAX1_2    TAX1_1    NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
@@ -45063,16 +45045,16 @@ LIST VAR[i=2:6:2,j=1:5:2]
  dealloc  dynamic grid (G014)          (AX041)   (AX040)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:147 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   1 I:    3    6  J:    2    4  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ allocate dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  strip regrid on X: VAR --> (G014)           @XACT
  rdstride VAR      C:  7 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE VAR      M:147 dset:   1 I:    2    4  J:    1    3  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J*10 + I
                         regrid: 2 delta on X, 2 delta on Y
              FILENAME : bn_strides.cdf
@@ -45089,7 +45071,7 @@ LIST VAR[i=2:6:2,j=1:5:2]
  
 ! test sub-region selection on strides axis
 let a = bigvar[i=1:40:5]
- dealloc  dynamic grid (G014)          (AX041)   (AX005)   ZAX1_2    TAX1_1    NORMAL    NORMAL
+ dealloc  dynamic grid (G014)          (AX041)   (AX009)   ZAX1_2    TAX1_1    NORMAL    NORMAL
  -DELETE VAR      M:151 dset:   1 I:    1    2  J:    1    2  K:    1    2  L:    1    1  M: -999 -999  N: -999 -999
 list/j=1/k=1/l=1 a[i=3:5]
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
@@ -45164,17 +45146,17 @@ cancel mem/all
 LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2]
  dealloc  dynamic grid (G001)          (AX041)   (AX040)   ZAX1_20   TAX1_10   NORMAL    NORMAL
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   1 I:    3    6  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- allocate dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ allocate dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  strip regrid on X: UNEVENVAR --> (G001)           @XACT
  rdstride UNE-NVAR C:  8 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  nulrgd  UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  -DELETE UNE-NVAR M:151 dset:   1 I:    2    4  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
              VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN]
                         regrid: on X
              FILENAME : bn_strides.cdf
@@ -45192,7 +45174,7 @@ set region/i=3:6/j=2:4/k=1:2/l=1
  
 use/order=yx bn_strides
 list bigvar[i=3:9:2, j=2:6:2, k=1:3:2]
- dealloc  dynamic grid (G001)          (AX005)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
+ dealloc  dynamic grid (G001)          (AX009)   YUNEVEN   ZAX1_6    TAX1_4    NORMAL    NORMAL
  -DELETE UNE-NVAR M:147 dset:   1 I:    1    2  J:    1    1  K:    1    1  L:    1    1  M: -999 -999  N: -999 -999
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid (G001)          (AX040)   (AX042)   (AX043)   TAX1_10   NORMAL    NORMAL
@@ -46556,7 +46538,7 @@ set axis/units=feet `temp,return=zaxis`
 show axis `temp,return=zaxis`
  !-> show axis PSZT
  name       axis              # pts   start                end
- PSZT      Z (FEET)            27 i-  5                    3824
+ PSZT      Z (feet)            27 i-  5                    3824
    Axis span (to cell edges) = 4149
  
 ! unrecognized units
@@ -46565,7 +46547,7 @@ set axis/units="something" `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon
@@ -46582,7 +46564,7 @@ set axis/units=something `temp,return=xaxis`
 show axis `temp,return=xaxis`
  !-> show axis PSXT1
  name       axis              # pts   start                end
- PSXT1     X (SOMETHING)      160mr   130.5                289.5
+ PSXT1     X (something)      160mr   130.5                289.5
    Axis span (to cell edges) = 160 (modulo length = 360)
  
 ! restore lon using word DEG
@@ -46602,7 +46584,7 @@ list/x=130w/y=1/k=1/L=1:5 temp
              SUBSET   : 5 points (TIME)
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                        130.5W  
                        100
  17-AUG-1982 12 / 1:  25.9777
@@ -46617,9 +46599,9 @@ set axis/units=meters `temp,return=yaxis`
 list/x=222/k=1/l=1/y=-0.5:0.5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 4 points (Y (METERS))
+             SUBSET   : 4 points (Y (meters))
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46640,7 +46622,7 @@ list/x=222/k=1/l=1/y=-0.5:0.5 temp
              FILENAME : gt4d011.cdf
              SUBSET   : 4 points (LATITUDE)
              LONGITUDE: 138.5W
-             Z (ZORRO): 5
+             Z (zorro): 5
              TIME     : AUG-1982
                138.5W  
                 92
@@ -46655,10 +46637,10 @@ set axis/units=meters `temp,return=taxis`
 list/x=130w/y=1/k=1/l=1:5 temp
              VARIABLE : TEMPERATURE (deg. C)
              FILENAME : gt4d011.cdf
-             SUBSET   : 5 points (T (METERS))
+             SUBSET   : 5 points (T (meters))
              LONGITUDE: 130.5W
              LATITUDE : 0.833N
-             Z (ZORRO): 5
+             Z (zorro): 5
                 130.5W  
                 100
  22702   / 1:  25.9777
@@ -46673,9 +46655,9 @@ show grid temp
     GRID PS3DT2
  name       axis              # pts   start                end
  PSXT1     LONGITUDE          160mr   130.5E               70.5W
- PSYT      Y (SECONDS)        100 i   -28.836              48.568
- PSZT      Z (ZORRO)           27 i-  5                    3824
- TIME11    T (METERS)          25 r   22702                26206
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+ PSZT      Z (zorro)           27 i-  5                    3824
+ TIME11    T (meters)          25 r   22702                26206
  normal    E
  normal    F
  
@@ -48324,11 +48306,11 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET Ver. 6.861
+ LAB 1  8.000E+00  7.200E+00 0.060    0  SYSTEM  @ASFERRET Ver. 6.925
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 2  8.000E+00  7.100E+00 0.060    0  SYSTEM  @ASNOAA/PMEL TMAP
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
- LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS26-MAR-2014 15:38:39
+ LAB 3  8.000E+00  7.000E+00 0.060    0  SYSTEM  @AS07-OCT-2014 10:42:50
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 4  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLONGITUDE : 179E
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
@@ -49444,11 +49426,11 @@ let the_data_var = {4,5,4}
  
 list/format=comma country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
      COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR
 1   / 1:"JP",1,4000,1000500,"w",4  
@@ -49457,11 +49439,11 @@ list/format=comma country, id, aa, bb, newcountry, the_data_var
  
 list/format=tab/norow country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
 COUNTRY	ID	AA	BB	NEWCOUNTRY	THE_DATA_VAR
 "JP"	1	4000	1000500	"w"	4  
@@ -49605,7 +49587,7 @@ GO bn_long_revision_num.jnl
  
 ! ferret version
 sh sym FERRET_VERSION
-FERRET_VERSION = "6.861"
+FERRET_VERSION = "6.925"
  
 ! history attribute
 let a = 12
@@ -49623,7 +49605,7 @@ LAB1 = "X : 0.5 to 314.5"
  
 ! show commands without an argument, lists version number at the top
 sho command
- Commands in Program FERRET   version6.861:
+ Commands in Program FERRET   version6.925:
  SET
  SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE
  SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN
@@ -49638,7 +49620,7 @@ sho command
  SET VARIABLE/TITLE/UNIT/GRID/BAD/DATASET/NAME/SCALEFAC/OFFSET/OUTTYPE/SIGMA
       /CURVILIN
  SET GRID/SAVE/RESTORE
- SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE
+ SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE/NAME
  SET MEMORY/SIZE
  SET ATTRIBUT/TYPE/DATASET/OUTPUT/LIKE/QUIET
  SET NCCACHE/SIZE/NELEMS/PREEMPT
@@ -49759,7 +49741,7 @@ go ptest
 PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20)
  
 sh sym win_title
-WIN_TITLE = "26-Mar-14:15:37"
+WIN_TITLE = "7-Oct-14:10:41"
  
 set win/title="set the title"
 sho sym win_title
@@ -49777,7 +49759,7 @@ sho sym win_title
 WIN_TITLE = "_"
  
 set win/title="($session_date):($session_time)"
- !-> set win/title="26-Mar-14:15:37"
+ !-> set win/title=" 7-Oct-14:10:41"
  
 ! If the date or time starts with a blank then we get an extra
 ! underscore in the window title. Evaluating the symbols into
@@ -49786,16 +49768,16 @@ set win/title="($session_date):($session_time)"
 ! If so substitute another string.
  
 DEFINE SYMBOL the_date = ($session_date"SESSION_DATE")
- !-> DEFINE SYMBOL the_date = 26-Mar-14
+ !-> DEFINE SYMBOL the_date =  7-Oct-14
 DEFINE SYMBOL the_time = ($session_time"SESSION_TIME")
- !-> DEFINE SYMBOL the_time = 15:37
+ !-> DEFINE SYMBOL the_time = 10:41
 SET WIN/TITLE="($the_date):($the_time)"
- !-> SET WIN/TITLE="26-Mar-14:15:37"
+ !-> SET WIN/TITLE="7-Oct-14:10:41"
  
 can win/all
 set win/new
 sh sym win_title
-WIN_TITLE = "26-Mar-14:15:37"
+WIN_TITLE = "7-Oct-14:10:41"
  
 GO bn_reset
 cancel mode verify
@@ -52864,10 +52846,6 @@ IS_ELEMENT_OF_STR_N(VAR,VALUES)
     Returns 1 if 1st arg contains any of the values in 2nd arg, 2 if case-insensitve match, else 0
     VAR: string (STRING)
     VALUES: strings to search (STRING)
-IS_ELEMENT_OF_STR(VAR,VALUES)
-    Returns 1 if first argument contains any of the values in argument 2, else 0
-    VAR: data to test (STRING)
-    VALUES: strings to search for (STRING)
  
 ! FILL on data with subspan modulo axis, got wrong data
 GO bn_reset
@@ -53472,8 +53450,6 @@ yes? list xboxlo[gx=xax],xboxhi[gx=xax],x[gx=xax]
          XBOXLO  XBOXHI    X
 I / *:    -2.000  2.000  0.0000
  
-Unable to allocate 200.0 Mwords of memory.
-Restoring previous memory of 25.6 Mwords.
 yes? def ax/x/bounds xax = {0,3,5},{-2,2,2,4,4,6}
 yes? list xboxlo[gx=xax],xboxhi[gx=xax],x[gx=xax]
              X: -2 to 6
@@ -54103,8 +54079,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54148,8 +54124,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT191_108)          DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54540,12 +54516,12 @@ use coads_climatology
 set axis/stride=6/offset=5 `sst,return=xaxis`
  !-> set axis/stride=6/offset=5 COADSX
 show axis `sst,return=xaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LONGITUDE           30mr   31E                  19E(379)
+ (AX009)   LONGITUDE           30mr   31E                  19E(379)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 cancel axis/stride `sst,return=xaxis`
- !-> cancel axis/stride (AX005)
+ !-> cancel axis/stride (AX009)
  
 !--- 8.2 stride value is not an integer factor of the axis length
 ! warning: it may lose modulo property
@@ -54769,9 +54745,9 @@ show axis `sst,return=xaxis`
  (AX051)   LONGITUDE           90mr   21E                  17E(377)
    Axis span (to cell edges) = 360 (modulo length = axis span)
 show axis `sst,return=yaxis`
- !-> show axis (AX005)
+ !-> show axis (AX009)
  name       axis              # pts   start                end
- (AX005)   LATITUDE            45 r   89S                  87N
+ (AX009)   LATITUDE            45 r   89S                  87N
    Axis span (to cell edges) = 180
 show axis `sst,return=taxis`
  !-> show axis (AX048)
@@ -55349,8 +55325,6 @@ LEV_MIN = "-0.3"
 LEV_MAX = "1.1"
 LEV_NUM = "28"
 LEV_DEL = "0.05"
-Unable to allocate 500000.0 Mwords of memory.
-Restoring previous memory of 0.2 Mwords.
 set view lr; shade/lev a; sh sym lev*
 LEV_TEXT = ""
 LEV_MIN = "-0.3"
@@ -55401,6 +55375,8 @@ LIST/NOHEAD/I=91:94/J=37/K=1/L=1 temp,salt
 ! Previously this did not have the effect of changing the precision.
 LIST/NOHEAD/I=91:94/J=37/K=1/L=1/PREC=3 temp,salt
 139.5W / 91:  27.3  2.37E-04
+Unable to allocate 500000.0 Mwords of memory.
+Restoring previous memory of 0.2 Mwords.
 138.5W / 92:  27.3  2.38E-04
 137.5W / 93:  27.2  2.38E-04
 136.5W / 94:  27.2  2.38E-04
@@ -55499,7 +55475,7 @@ set mem/siz=90
 sh sym ferret_memory
 FERRET_MEMORY = "90"
 show memory
- Current size of FERRET memory cache: 90 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 90 MegaWords  (1 word = 8 bytes)
  
 set mem/size=0.05
 sh sym ferret_memory
@@ -55511,7 +55487,7 @@ FERRET_MEMORY = "0.2"
  
 set mem/siz=25.6  ! return to the default setting
 show memory
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
  
 GO bn_reset
 cancel mode verify
@@ -55773,31 +55749,38 @@ EXPND_BY_LEN_STR(var,len,nx)
 FC_ISUBSET(index_list,lengths,nx,FullData)
 EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len)
 EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EXPNDI_BY_M_COUNTS(dat,counts,max_row_len)
 STR_MASK(STRING,MASK,--)
 SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
+SEPARATE(A,Rowsize,FixLongitudes)
 ADD_9(A,B,C,D,E,F,G,H,I)
 APPENDE(ENS,VAR)
 AVET(A)
-BIN_INDEX_WT(INDEX,WT,INDXMAX)
 DATES(Offsets)
-EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EFSTRINGS(--)
 FACTORIAL(A)
 FFT_AMP(A)
 FFTA_SAMPLE(A)
 FFT_PHAS(A)
-IS_ELEMENT_OF_STR(VAR,VALUES)
+LENGTH_OF_STRINGS(--)
+MAXSTRLEN(A)
 PASS_THRU(A)
+PASS_THRU_STRING(A)
 PERCENT_GOOD_T(A)
-SAMPLEI_MULTI(I_INDICES,DAT_TO_SAMPLE)
-SAMPLEJ_MULTI(J_INDICES,DAT_TO_SAMPLE)
-SAMPLEK_MULTI(K_INDICES,DAT_TO_SAMPLE)
-SAMPLEL_MULTI(L_INDICES,DAT_TO_SAMPLE)
-SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
-SORTI_STR(DAT)
+PICK_A_STRING(A,N)
+PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3)
+SAMPLE_FAST_I(V,Indices)
+SEPARATE(A,Rowsize,FixLongitudes)
+SEPARATE_STR(A,Rowsize,FixLongitudes)
 STORAGE(A)
 STRING_ARG(Flags,NString)
+STRING_CAT3(A,B,C)
+STRING_LEN_SUM(S1,S2)
+STRINGS_AS_ARGS(S1,S2,NCHAR)
+STR_MISSING(MASK,STR,REPL)
 STUDENT_T_CUTOFF(P,nf)
 SUBTRACT(A,B)
+WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename)
  
  
 GO bn_reset
@@ -58350,7 +58333,7 @@ SORTI(DAT)
           T: inherited from argument(s)
           E: inherited from argument(s)
           F: inherited from argument(s)
-    DAT: variable to sort in I
+    DAT: variable to sort in I (FLOAT)
         Influence on output axes:
           X: no influence (indicate argument limits with "[]")
           Y: passed to result grid
@@ -60007,10 +59990,10 @@ SH GRID am
  
 GO bn_clock_syms
 SH SYM delta_cpu, clock_secs, current_date, current_time
-DELTA_CPU = "45.3061"
-CLOCK_SECS = "69.102"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:39:02"
+DELTA_CPU = "47.1998"
+CLOCK_SECS = "93.535"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:43:20"
 ! test special symbols DELTA_CPU, CLOCK_SECS
 !
 ! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE
@@ -60019,8 +60002,8 @@ CURRENT_TIME = "15:39:02"
 use gt4d011
 shade/k=1 temp[L=@ave]
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.043993"
-CLOCK_SECS = "69.221"
+DELTA_CPU = "0.040994"
+CLOCK_SECS = "93.638"
  
 repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=1
@@ -60034,60 +60017,60 @@ repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=9
 !-> REPEAT: K=10
 let ten_plots = ($DELTA_CPU)
- !-> DEFINE VARIABLE ten_plots = 0.33195
+ !-> DEFINE VARIABLE ten_plots = 0.322951
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.001"
-CLOCK_SECS = "69.995"
+DELTA_CPU = "0"
+CLOCK_SECS = "94.678"
  
 let  sumclock = 0
 let  sumcpu = 0
 sh sym CLOCK_SECS
-CLOCK_SECS = "69.996"
+CLOCK_SECS = "94.679"
 repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\
 let sumcpu =`sumcpu + dt`)
  !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`)
 !-> REPEAT: K=1
- !-> DEFINE VARIABLE dt = 0.036994
- !-> DEFINE VARIABLE sumcpu =0.036994
+ !-> DEFINE VARIABLE dt = 0.034995
+ !-> DEFINE VARIABLE sumcpu =0.034995
 !-> REPEAT: K=2
- !-> DEFINE VARIABLE dt = 0.036994
- !-> DEFINE VARIABLE sumcpu =0.073988
+ !-> DEFINE VARIABLE dt = 0.038994
+ !-> DEFINE VARIABLE sumcpu =0.073989
 !-> REPEAT: K=3
- !-> DEFINE VARIABLE dt = 0.035994
- !-> DEFINE VARIABLE sumcpu =0.109982
+ !-> DEFINE VARIABLE dt = 0.032995
+ !-> DEFINE VARIABLE sumcpu =0.106984
 !-> REPEAT: K=4
- !-> DEFINE VARIABLE dt = 0.034995
- !-> DEFINE VARIABLE sumcpu =0.144977
+ !-> DEFINE VARIABLE dt = 0.035995
+ !-> DEFINE VARIABLE sumcpu =0.142979
 !-> REPEAT: K=5
  !-> DEFINE VARIABLE dt = 0.032995
- !-> DEFINE VARIABLE sumcpu =0.177972
+ !-> DEFINE VARIABLE sumcpu =0.175974
 !-> REPEAT: K=6
- !-> DEFINE VARIABLE dt = 0.034995
- !-> DEFINE VARIABLE sumcpu =0.212967
+ !-> DEFINE VARIABLE dt = 0.033994
+ !-> DEFINE VARIABLE sumcpu =0.209968
 !-> REPEAT: K=7
- !-> DEFINE VARIABLE dt = 0.033995
- !-> DEFINE VARIABLE sumcpu =0.246962
+ !-> DEFINE VARIABLE dt = 0.037995
+ !-> DEFINE VARIABLE sumcpu =0.247963
 !-> REPEAT: K=8
- !-> DEFINE VARIABLE dt = 0.034994
- !-> DEFINE VARIABLE sumcpu =0.281956
+ !-> DEFINE VARIABLE dt = 0.037994
+ !-> DEFINE VARIABLE sumcpu =0.285957
 !-> REPEAT: K=9
- !-> DEFINE VARIABLE dt = 0.036994
- !-> DEFINE VARIABLE sumcpu =0.31895
+ !-> DEFINE VARIABLE dt = 0.035994
+ !-> DEFINE VARIABLE sumcpu =0.321951
 !-> REPEAT: K=10
- !-> DEFINE VARIABLE dt = 0.036995
- !-> DEFINE VARIABLE sumcpu =0.355945
+ !-> DEFINE VARIABLE dt = 0.032996
+ !-> DEFINE VARIABLE sumcpu =0.354947
  
 say `sumcpu`
- !-> MESSAGE/CONTINUE 0.355945
-0.355945
+ !-> MESSAGE/CONTINUE 0.354947
+0.354947
 sh sym CLOCK_SECS
-CLOCK_SECS = "71.231"
+CLOCK_SECS = "96.227"
  
 SH SYM session_date, current_date, session_time, current_time
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:37"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:39:04"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:41"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:43:23"
  
  
 ! ******** V6.3 Additions below ***********
@@ -61319,11 +61302,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890 at ave]
  strip regrid on T: TEMP --> ZNTERMED         @AVE
  reading TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 42 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 42 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 on X at AAV, on Y at AAV*
              FILENAME : gtsa056_1.cdf
@@ -61343,13 +61326,13 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gx=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> YNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 32 dset:   1 I:   95  106  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 32 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:   95  106  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at AVE, on Y at LIN, on Z at LIN, on T at LIN
              FILENAME : gtsa056_1.cdf
@@ -61369,11 +61352,11 @@ LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gt=g5_10g00abcdefghijkl
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @ASN
  found   TEMP     M: 43 dset:   1 I:   95  106  J:   45   50  K:    1    2  L:    2    5  M: -999 -999  N: -999 -999
- regrid  TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
- -DELETE TEMP     M: 34 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
+ -DELETE TEMP     M: 36 dset:   1 I:  100  101  J:   45   50  K:    1    2  L:    2    3  M: -999 -999  N: -999 -999
  regrid XY
- regrid  TEMP     M: 34 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
+ regrid  TEMP     M: 36 dset:   1 I:   12   12  J:   45   49  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 29 dset:   1 I:  100  101  J:   45   50  K:    1    1  L:    2    3  M: -999 -999  N: -999 -999
              VARIABLE : TEMPERATURE (deg. C)
                         regrid: G5_10 on X at LIN, on Y at LIN, on Z at LIN, on T at ASN
@@ -61402,7 +61385,7 @@ plot temp
  getgrid EX#1     C:  5 dset:   2 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
  allocate dynamic grid PS3DT1          PSXT1     PSYT1     PSZT2     TIME14    NORMAL    NORMAL
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
 setting up plot
 PPL plot 753  complete
 plot/over temp[g=u]
@@ -61412,12 +61395,12 @@ plot/over temp[g=u]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 28 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 27 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61429,7 +61412,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN
  strip regrid on T: TEMP --> XNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 23 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -61444,7 +61427,7 @@ plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890]
  strip regrid on X: TEMP --> G5_10G00ABCDEFGH @LIN
  strip regrid on Z: TEMP --> XNTERMED         @LIN
  strip regrid on T: TEMP --> ZNTERMED         @LIN
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 26 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  -DELETE TEMP     M: 23 dset:   2 I:   50   51  J:   45   46  K:    1    2  L:    2  104  M: -999 -999  N: -999 -999
@@ -61460,12 +61443,12 @@ plot/over temp[g=u at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  170  M: -999 -999  N: -999 -999
  strip moduloing TEMP on T axis:     3   170 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 26 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    3  168  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     3   168 dset:   2
  strip regrid on X: TEMP --> PS3DU1           @AAV
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 19 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    1    2  M: -999 -999  N: -999 -999
  doing moduloing TEMP on T axis:     1     2 dset:   2
@@ -61477,7 +61460,7 @@ plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day at ave]
  eval    EX#1     C:  4 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @AAV
  strip regrid on T: TEMP --> XNTERMED         @AVE
- found   TEMP     M: 36 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
+ found   TEMP     M: 34 dset:   2 I:   50   51  J:   45   50  K:    1    2  L:    1  172  M: -999 -999  N: -999 -999
  regrid  TEMP     M: 18 dset:   2 I:   50   51  J:   45   46  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
  regrid XY
  regrid  TEMP     M: 17 dset:   2 I:   50   50  J:   45   45  K:    1    1  L:    2  104  M: -999 -999  N: -999 -999
@@ -62607,65 +62590,65 @@ sp cat the_xml_file.xml
    <value>8765.82</value>
 </attribute>
 </axis>
-<axis name="ZAXLEVIT191_1">
+<axis name="XAX_LEV9421_380">
 <attribute name="direction" type="char">
-   <value><![CDATA[K]]></value>
+   <value><![CDATA[I]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[METERS]]></value>
+   <value><![CDATA[degrees_east]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>1</value>
+   <value>360</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>0</value>
+   <value>20.5</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>0</value>
-</attribute>
-<attribute name="positive" type="char">
-   <value><![CDATA[down]]></value>
+   <value>379.5</value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value>no</value>
+   <value><![CDATA[yes]]></value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[ZAXLEVIT191_1]]></value>
+   <value><![CDATA[XAX_LEV9421_380]]></value>
 </attribute>
 </axis>
-<axis name="XAX_LEV9421_380">
+<axis name="ZAXLEVIT191_1">
 <attribute name="direction" type="char">
-   <value><![CDATA[I]]></value>
+   <value><![CDATA[K]]></value>
 </attribute>
 <attribute name="units" type="char">
-   <value><![CDATA[degrees_east]]></value>
+   <value><![CDATA[METERS]]></value>
 </attribute>
 <attribute name="length" type="short">
-   <value>360</value>
+   <value>1</value>
 </attribute>
 <attribute name="start" type="double">
-   <value>20.5</value>
+   <value>0</value>
 </attribute>
 <attribute name="end" type="double">
-   <value>379.5</value>
+   <value>0</value>
+</attribute>
+<attribute name="positive" type="char">
+   <value><![CDATA[down]]></value>
 </attribute>
 <attribute name="point_spacing" type="char">
    <value><![CDATA[even]]></value>
 </attribute>
 <attribute name="modulo" type="char">
-   <value><![CDATA[yes]]></value>
+   <value>no</value>
 </attribute>
 <attribute name="infile_datatype" type="char">
    <value><![CDATA[DOUBLE]]></value>
 </attribute>
 <attribute name="orig_file_axname" type="char">
-   <value><![CDATA[XAX_LEV9421_380]]></value>
+   <value><![CDATA[ZAXLEVIT191_1]]></value>
 </attribute>
 </axis>
 <axis name="YAX_LEV94">
@@ -62936,7 +62919,7 @@ define axis/t=1-jan-2010:30-mar-2010:1/units=days tin
 define axis/t=1-jan-2010:30-mar-2010:10/units=days tout
 let tt = t[gt=tout,L=1:10]
 sh grid tt
-    GRID (G089)
+    GRID (G091)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -63143,7 +63126,7 @@ list/x=2:3 sgrid
  
 let tpts = 39798 + 87*RANDU(I)
 show grid tt
-    GRID (G103)
+    GRID (G089)
  name       axis              # pts   start                end
  X10       X                  201 r   0                    10
  Y10       Y                  201 r   0                    10
@@ -64063,9 +64046,9 @@ list contents
              VARIABLE : { SPAWN:"cat redirect_journal.txt" }
              SUBSET   : 47 points (X)
  1    /  1:" ! NOAA/PMEL TMAP"                                                          
- 2    /  2:" ! FERRET v6.861  "                                                         
- 3    /  3:" ! Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14"                              
- 4    /  4:" ! 26-Mar-14 15:37     "                                                    
+ 2    /  2:" ! FERRET v6.925  "                                                         
+ 3    /  3:" ! Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14"                             
+ 4    /  4:" !  7-Oct-14 10:41     "                                                    
  5    /  5:""                                                                           
  6    /  6:"! "                                                                         
  7    /  7:"!! --- 22. produce some output to stdout and stderr"                        
@@ -64127,23 +64110,24 @@ sh trans
 variable transforms e.g.SST[T=1-jan:15-mar at DDC]
    code        description                  code        description
    ----        -----------                  ----        -----------
-   @ITP        interpolated                 @SPZ        Parzen smoothed
-   @AVE        averaged                     @FAV        ave-filled
-   @VAR        variance                     @FLN        linear-filled
-   @SUM        summed                       @FNR        nearest-filled
-   @RSU        running sum                  @NGD        number of valid
-   @SHF        shifted                      @NBD        number flagged bad
-   @MIN        minimum                      @LOC        location
-   @MAX        maximum                      @WEQ        weighted equal
-   @DDC        centered derivative          @CDA        closest dist above
-   @DDF        forward derivative           @CDB        closest dist below
-   @DDB        backwards derivative         @CIA        closest index above
-   @DIN        integrated                   @CIB        closest index below
-   @IIN        indef. integ.                @EVN        event mask
-   @SBX        box smoothed                 @MED        median smoothed
-   @SBN        binomial smoothed            @SMX        maximum smoothed
-   @SWL        Welch smoothed               @SMN        minimum smoothed
-   @SHN        Hanning smoothed
+   @ITP        interpolated                 @FAV        ave-filled
+   @AVE        averaged                     @FLN        linear-filled
+   @VAR        variance                     @FNR        nearest-filled
+   @SUM        summed                       @NGD        number of valid
+   @RSU        running sum                  @NBD        number flagged bad
+   @SHF        shifted                      @LOC        location
+   @MIN        minimum                      @WEQ        weighted equal
+   @MAX        maximum                      @CDA        closest dist above
+   @DDC        centered derivative          @CDB        closest dist below
+   @DDF        forward derivative           @CIA        closest index above
+   @DDB        backwards derivative         @CIB        closest index below
+   @DIN        integrated                   @EVN        event mask
+   @IIN        indef. integ.                @MED        median smoothed
+   @SBX        box smoothed                 @SMX        maximum smoothed
+   @SBN        binomial smoothed            @SMN        minimum smoothed
+   @SWL        Welch smoothed               @STD        standard deviation
+   @SHN        Hanning smoothed             @WGT        weights for avg,int
+   @SPZ        Parzen smoothed
  
 regridding transforms e.g.SST[GX=x5deg at AVE]
    code        description                  code        description
@@ -66286,7 +66270,7 @@ let a = x[gx=0:2:1]; save/clob/file=a1.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX128)   X                    3 r   0                    2
+ (AX129)   X                    3 r   0                    2
  normal    Y
  normal    Z
  normal    T
@@ -66302,7 +66286,7 @@ let a = x[gx=1:3:1]; save/clob/file=a2.nc a
 sho grid/x a
     GRID (G101)
  name       axis              # pts   start                end
- (AX120)   X                    3 r   1                    3
+ (AX116)   X                    3 r   1                    3
  normal    Y
  normal    Z
  normal    T
@@ -66323,14 +66307,14 @@ can var/all; can dat/all
 use a1
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
  2   / 3:  2.000
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66345,7 +66329,7 @@ use a2
  
 list x[gx=a[d=1]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66354,7 +66338,7 @@ list x[gx=a[d=1]]
 ! The bug was that this listed 1,2,3 rather than 0,1,2
 list x[gx=a[d=1,i=1:3]]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66370,7 +66354,7 @@ list x[gx=a[d=1,i=1:3]]
 ! Why is the following different?
 list x[gx=a[d=1],i=1:3]
              VARIABLE : X
-                        axis AX128
+                        axis AX129
              SUBSET   : 3 points (X)
  0   / 1:  0.000
  1   / 2:  1.000
@@ -66533,40 +66517,40 @@ can mode ver
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.784
-randu2_randn2       0.043
-randu2_randn2       0.635
-randu2_randn2       0.230
-randu2_randn2       0.359
+randu2_randn2       0.712
+randu2_randn2       0.201
+randu2_randn2       0.650
+randu2_randn2       0.382
+randu2_randn2       0.609
              VARIABLE : RANDU2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.333
-randu2_randn2       0.964
-randu2_randn2       0.686
-randu2_randn2       0.545
-randu2_randn2       0.931
+randu2_randn2       0.262
+randu2_randn2       0.997
+randu2_randn2       0.638
+randu2_randn2       0.693
+randu2_randn2       0.167
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.227
-randu2_randn2       0.189
-randu2_randn2       0.115
-randu2_randn2       0.929
-randu2_randn2       0.823
-randu2_randn2       0.246
+randu2_randn2       0.833
+randu2_randn2       0.409
+randu2_randn2       0.953
+randu2_randn2       0.533
+randu2_randn2       0.222
+randu2_randn2       0.745
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.055
-randu2_randn2       0.504
-randu2_randn2       0.065
-randu2_randn2       0.168
-randu2_randn2       0.230
-randu2_randn2       0.900
+randu2_randn2       0.917
+randu2_randn2       0.701
+randu2_randn2       0.236
+randu2_randn2       0.034
+randu2_randn2       0.841
+randu2_randn2       0.972
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66591,40 +66575,40 @@ randu2_randn2       0.900
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       1.084
-randu2_randn2       0.088
-randu2_randn2      -1.807
-randu2_randn2      -1.326
-randu2_randn2       0.638
+randu2_randn2       0.240
+randu2_randn2      -1.279
+randu2_randn2      -0.155
+randu2_randn2      -0.377
+randu2_randn2       2.940
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.364
-randu2_randn2       0.101
-randu2_randn2       1.394
-randu2_randn2       1.247
-randu2_randn2      -0.634
+randu2_randn2      -0.961
+randu2_randn2      -0.963
+randu2_randn2       1.489
+randu2_randn2       0.470
+randu2_randn2       1.017
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -2.085
-randu2_randn2       0.109
-randu2_randn2       0.078
-randu2_randn2      -1.286
-randu2_randn2      -0.903
-randu2_randn2      -0.031
+randu2_randn2      -0.310
+randu2_randn2       0.844
+randu2_randn2       0.924
+randu2_randn2      -0.357
+randu2_randn2       0.229
+randu2_randn2       1.450
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       1.979
-randu2_randn2      -0.937
-randu2_randn2      -0.895
-randu2_randn2       0.456
-randu2_randn2       0.406
-randu2_randn2       0.199
+randu2_randn2       0.010
+randu2_randn2      -1.172
+randu2_randn2       1.298
+randu2_randn2       1.144
+randu2_randn2       0.021
+randu2_randn2       0.230
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -66649,14 +66633,14 @@ randu2_randn2      -0.124
  Column  1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1)
  Column  2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z)
  Column  3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z)
-randu2_randn2       1.276       1.276       0.849
-randu2_randn2       1.264       1.264       0.849
-randu2_randn2       0.849       0.849       0.214
-randu2_randn2       0.214       0.214       0.292
-randu2_randn2      -0.219      -0.219       0.292
-randu2_randn2      -0.456      -0.219       0.292
-randu2_randn2      -0.028      -0.028       0.292
-randu2_randn2       0.292       0.292       0.292
+randu2_randn2       1.199       1.199       0.549
+randu2_randn2       1.055       1.055       0.549
+randu2_randn2       0.549       0.549      -0.127
+randu2_randn2      -0.208      -0.127       0.549
+randu2_randn2      -0.127      -0.208       0.549
+randu2_randn2      -0.857      -0.262       0.549
+randu2_randn2      -0.262      -0.262       0.549
+randu2_randn2       0.759       0.759       0.759
  
 GO bn_reset
 cancel mode verify
@@ -71109,10 +71093,10 @@ list a2[ge=eoffset at ave, gf=fax4day at ave]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71154,10 +71138,10 @@ list a2[ge=eoffset at sum, gf=fax4day at sum]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71199,10 +71183,10 @@ list a2[ge=eoffset at var, gf=fax4day at var]
  eval    A2       C:  8 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   48
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  pseudo  _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1   48
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    F2PT
  -DELETE _E       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N: -999 -999
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    E2PT      NORMAL
  regrid  A2       M: 70 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M:    1    2  N:    1   16
@@ -71408,18 +71392,18 @@ list afcst[gf=ehour at max]
  -DELETE _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  getgrid EX#1     C:  5 dset:   1 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
  eval    EX#1     C:  4 dset:   1 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- allocate dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
- strip regrid on F: AFCST --> (G106)           @MAX
+ allocate dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ strip regrid on F: AFCST --> (G103)           @MAX
  eval    AFCST    C:  7 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  allocate dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  pseudo  _F       M: 74 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
  dealloc  dynamic grid (G096)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EDAY
  regrid  AFCST    M: 46 dset:   0 I: -999 -999  J: -999 -999  K: -999 -999  L: -999 -999  M: -999 -999  N:    1    5
- dealloc  dynamic grid (G106)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
+ dealloc  dynamic grid (G103)          NORMAL    NORMAL    NORMAL    NORMAL    NORMAL    EHOUR
              VARIABLE : _F[GF=EDAY]
                         regrid: 24 hour on F at MAX
              SUBSET   : 5 points (FORECAST)
@@ -71430,8 +71414,8 @@ list afcst[gf=ehour at max]
  05-JAN-1990 00 / 5:  32497.0
 show grid
  Default grid for DEFINE VARIABLE is ABSTRACT
- Last successful data access was on grid (G106)
-    GRID (G106)
+ Last successful data access was on grid (G103)
+    GRID (G103)
  name       axis              # pts   start                end
  normal    X
  normal    Y
@@ -71464,7 +71448,7 @@ show data fourfiles
  
 list/i=3 sst[T=@ave]
  getgrid EX#1     C:  5 dset:   5 I:    1    1  J:    1    1  K:    1    1  L:    1    1  M:    1    1  N:    1    1
- allocate dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ allocate dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  strip limits reconciliation : EX#1
  eval    EX#1     C:  5 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  strip --> SST[T=01-JAN00:45:31-DEC06:34 at AVE,D=5]
@@ -71492,7 +71476,7 @@ list/i=3 sst[T=@ave]
 cancel data fourfiles
  -DELETE SST      M: 66 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L:    1   12  M:    1    4  N: -999 -999
  -DELETE SST      M: 74 dset:   5 I:    3    3  J:    1    9  K: -999 -999  L: -999 -999  M:    1    4  N: -999 -999
- dealloc  dynamic grid (G106)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
+ dealloc  dynamic grid (G103)          COADSX116_COADSY52_6NORMAL    TIME13    ENSEMBLE  NORMAL
  
 ! Create airt in the other datasets by LET/D definitions.
 let/d=ens2 airt = sst + 1
@@ -72438,8 +72422,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72489,8 +72473,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72528,8 +72512,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72567,8 +72551,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72598,8 +72582,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72630,8 +72614,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72691,8 +72675,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72736,8 +72720,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72791,8 +72775,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72827,8 +72811,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72863,8 +72847,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72899,8 +72883,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -72931,8 +72915,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73161,8 +73145,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73193,8 +73177,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          FLOAT     units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73234,8 +73218,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSY46_48)          DOUBLE    units           CHAR        13   T       degrees_north
                                  point_spacing   CHAR        4    T       even
@@ -73272,8 +73256,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73297,8 +73281,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             INT       units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73322,8 +73306,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        25   T       FERRET V6.861   26-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -73762,8 +73746,8 @@ variables:
 		A:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -73791,8 +73775,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -73842,8 +73826,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME10 = 366, 1096.485, 1826.97 ;
@@ -74308,6 +74292,54 @@ sh grid sal
  normal    E
  normal    F
  
+! This file from the datset "West Coast Carbon cruises" in our
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+ 
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ 
+sh dat 2
+     currently SET data sets:
+    2> ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc  (default)
+ name     title                             I         J         K         L         M         N
+ PROF     Prof                             ...       ...       ...       ...       1:21      ...
+ TIME     Time                             ...       ...       ...       ...       1:21      ...
+ LATITUDE Latitude                         ...       ...       ...       ...       1:21      ...
+ LONGITUDE
+          Longitude                        ...       ...       ...       ...       1:21      ...
+ ROWSIZE  Number of Observations for this  ...       ...       ...       ...       1:21      ...
+ PRESS_DB PRESS_DB                         1:373     ...       ...       ...       ...       ...
+ PCO2     PCO2                             1:373     ...       ...       ...       ...       ...
+ 
+sh att (profile)
+     attributes for dataset: ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ (profile)._FillValue = -1.E+34
+ (profile).actual_range = 70, 90
+ (profile).cf_role = profile_id 
+ (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt 
+ (profile).long_name = profile ID: Cruise and Station 
+ (profile).missing_value = -1.E+34
+ (profile).orig_file_axname = profile 
+sh grid rowsize
+    GRID GSS1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ normal    T
+ PROFILE   E                   21 r   70                   90
+ normal    F
+sh grid pco2
+    GRID GSS2
+ name       axis              # pts   start                end
+ OBS1      X                  373 r   1                    373
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
+ 
 GO bn_reset
 cancel mode verify
 GO bn_nco_append
@@ -74359,9 +74391,9 @@ variables:
 		DDAT_ORIG:long_name = "DDAT[GZ=ZAXIS_ORIG at ASN]" ;
 
 // global attributes:
-		:history = "Wed Mar 26 15:39:28 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
-			"FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "Tue Oct  7 10:43:58 2014: ncks -h -A -h z1.nc append_to_this.nc\n",
+			"FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 GO bn_reset
@@ -74393,8 +74425,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74424,8 +74456,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -74486,8 +74518,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! On a SAVE either with /BOUNDS or no bounds qualifier,
@@ -74514,8 +74546,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75694,8 +75726,8 @@ variables:
 		LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! The behavior is unchanged for user-defined variables
@@ -75717,8 +75749,8 @@ variables:
 		STRVAR:long_name = "mystrings" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
  
@@ -75743,12 +75775,12 @@ fill/lev=(20,30,10)/L=1 sst
  
  
  
-! *********** v6.87 Additions ***********
+! *********** v6.9 Additions ***********
 GO bn_reset
 cancel mode verify
-GO bn687_bug_fixes
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+GO bn69_bug_fixes
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
  
 GO bn_reset
@@ -75945,8 +75977,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Yet more combinations
@@ -75975,8 +76007,8 @@ variables:
 		A:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST
@@ -75996,8 +76028,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Subsets also use XAXIS_TEST1
@@ -76017,8 +76049,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Unless we use /KEEP_AXISNAMES - which removes renaming
@@ -76039,8 +76071,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! If we try /KEEP_AXISNAMES but there is a conflict, it's an err
@@ -76111,6 +76143,111 @@ sh att v1
  
 GO bn_reset
 cancel mode verify
+GO err686_sho_nonexist_att
+! err686_sho_nonexist_att.jnl
+! See ticket 2133
+ 
+!  Too many error messages were issued on this error
+set mode ignore
+ 
+use levitus_climatology
+show att temp.noexist[d=levitus_climatology]
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err686_set_var_name
+! err686_set_var_name.jnl
+! ticket 2152
+! rename user var or file var. Err message was
+! wrong if the name already exists.
+ 
+SET MODE IGNORE
+ 
+let a = 1
+let b = 2
+! Intentional error, new name is already a defined variable
+set var/name=b a
+! This rename is ok
+set var/name=c a
+sh var
+ Created by DEFINE VARIABLE:
+ >>> Definitions that replace any file variable of same name:
+     B = 2
+     C = 1
+ 
+use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+ 
+let a = 1
+let b = 2
+set var/name=b a
+ 
+! Intentional error, new name already in file
+ 
+ 
+! Intentional error, new name already in file
+set var/name=temp salt
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALT     (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ 
+! This rename is ok
+set var/name=salinity salt
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALINITY (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ 
+ 
+! Test LET/D variables:
+let/d=1 myvar = taux - tauy
+! This is an error, new name already in file
+set var/name=psi myvar
+! This is ok, new let/d name associated with the file
+set var/name=diff myvar
+show dat
+     currently SET data sets:
+    1> ./gt4d011.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                     91:108    35:56      1:10      1:25      ...       ...
+ SALINITY (SALINITY(ppt) - 35) /1000      91:108    35:55      1:10      1:25      ...       ...
+ U        ZONAL VELOCITY                  91:108    35:55      1:10      1:25      ...       ...
+ V        MERIDIONAL VELOCITY             91:108    35:55      1:10      1:25      ...       ...
+ W        VERTICAL VELOCITY               91:108    36:55      1:10      1:25      ...       ...
+ TAUX     ZONAL WIND STRESS               91:108    35:55      ...       1:25      ...       ...
+ TAUY     MERIDIONAL WIND STRESS          91:108    35:55      ...       1:25      ...       ...
+ PSI      STREAM FUNCTION                 91:108    35:56      ...       1:25      ...       ...
+ ------------------------------
+ DIFF[D=gt4d011] = TAUX - TAUY
+ 
+ 
+! another error, new name is a user-var
+yes? set var/name=diff w
+ 
+SET MODE/LAST ignore
+ 
+GO bn_reset
+cancel mode verify
 GO bn_bad_axis_bounds
 ! bn_bad_axis_bounds
 ! Ticket 2146 If there are invalid axis bounds
@@ -76197,6 +76334,2129 @@ plot/i=1:15/color=red/thick i
  
 cancel redirect
  
+GO bn_reset
+cancel mode verify
+GO bn_stddev
+! bn_std.jnl
+! New StdDev transform
+ 
+use coads_climatology
+list/x=100/y=10 sst[t=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 100E (interpolated)
+             LATITUDE : 10N (interpolated)
+             TIME     : 01-JAN 00:45 to 01-APR 08:12 (standard deviation)
+          0.4323
+list/x=100/L=1 sst[y=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 100E (interpolated)
+             LATITUDE : 90S to 90N (standard deviation)
+             TIME     : 16-JAN 06:00
+          10.09
+list/y=10/L=1 sst[x=@STD]
+             VARIABLE : SEA SURFACE TEMPERATURE (Deg C)
+             FILENAME : coads_climatology.cdf
+             LONGITUDE: 20E to 20E(380) (standard deviation)
+             LATITUDE : 10N (interpolated)
+             TIME     : 16-JAN 06:00
+          0.7935
+ 
+use gt4d011.cdf
+list/y=3/l=1/x=233 u[z=@STD]
+             VARIABLE : ZONAL VELOCITY (cm/sec)
+             FILENAME : gt4d011.cdf
+             LONGITUDE: 127W
+             LATITUDE : 3N (interpolated)
+             DEPTH (m): 0 to 100 (standard deviation)
+             TIME     : 17-AUG-1982 12:00
+          3.366
+list/y=3/l=1 temp[x=@std]
+             VARIABLE : TEMPERATURE (deg. C)
+             FILENAME : gt4d011.cdf
+             SUBSET   : 10 points (DEPTH (m))
+             LONGITUDE: 140W to 122W (standard deviation)
+             LATITUDE : 3N (interpolated)
+             TIME     : 17-AUG-1982 12:00
+ 5     /  1:  0.2508
+ 15    /  2:  0.2559
+ 25    /  3:  0.2623
+ 35    /  4:  0.2318
+ 45    /  5:  0.1489
+ 55    /  6:  0.1136
+ 65    /  7:  0.2355
+ 75    /  8:  0.4054
+ 85    /  9:  0.5649
+ 95    / 10:  0.7755
+list/y=3/l=1 temp[z=@std,x=@std]
+             VARIABLE : TEMPERATURE (deg. C)
+             FILENAME : gt4d011.cdf
+             LONGITUDE: 140W to 122W (standard deviation)
+             LATITUDE : 3N (interpolated)
+             DEPTH (m): 0 to 100 (standard deviation)
+             TIME     : 17-AUG-1982 12:00
+          0.1946
+ 
+GO bn_reset
+cancel mode verify
+GO bn_set_axis_name
+! bn_set_axis_name.jnl
+! ticket 2160 Implementing new qualifier SET AXIS/NAME
+! 3/2014
+!
+!
+! Prepare a dataset with a time axis
+ 
+define axis/t=1-may-2010:5-may-2010:1/units=days daysaxis
+let a = t[gt=daysaxis]
+save/clobber/file=a.nc a
+ 
+cancel variable a
+cancel axis daysaxis
+ 
+!  We define some axis, then open a dataset with an axis of that name.
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days daysaxis
+ 
+use a.nc
+ 
+! The axis in the dataset has been renamed.
+say `a,return=taxis`
+ !-> MESSAGE/CONTINUE DAYSAXIS1
+DAYSAXIS1
+ 
+! So, rename our user-defined axis
+set axis/name=days2000 daysaxis
+ 
+! and now rename the one from the dataset back to its original name
+set axis/name=daysaxis `a,return=taxis`
+ !-> set axis/name=daysaxis DAYSAXIS1
+sh grid a
+    GRID GSI1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ daysaxis  TIME                 5 r   01-MAY-2010 00:00    05-MAY-2010 00:00
+ normal    E
+ normal    F
+ 
+cancel data/all
+ 
+! If an axis is used in several datsets, renaming it of course
+! changes the name for all grids.
+! The attribute structure gets updated as well.
+ 
+! Make several datasets with the same x axis.
+define axis/x=1:13:1/units=meters x13axis
+let a = x[gx=x13axis]
+let b = 3*x[gx=x13axis]
+let c = 5*x[gx=x13axis]
+save/clobber/file=a.nc a
+save/clobber/file=b.nc b
+save/clobber/file=c.nc c
+ 
+can var/all
+can axis x13axis
+ 
+! Open them in Ferret; all grids are the same.
+use a.nc, b.nc, c.nc
+say `a[d=1],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+say `b[d=2],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+say `c[d=3],return=xaxis`
+ !-> MESSAGE/CONTINUE X13AXIS
+X13AXIS
+ 
+! Rename the axis
+set axis/name=x_in_meters x13axis
+say `a[d=1],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+say `b[d=2],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+say `c[d=3],return=xaxis`
+ !-> MESSAGE/CONTINUE x_in_meters
+x_in_meters
+ 
+! For SHOW DAT/ATT we get info from the attribute structure.
+! It has the udated name.
+sh dat/att
+     currently SET data sets:
+    1> ./a.nc
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ A                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        13   T       X[GX=X13AXIS]
+  
+    2> ./b.nc
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ B                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        15   T       3*X[GX=X13AXIS]
+  
+    3> ./c.nc  (default)
+ Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
+------------------------------------------------------------------------------------------
+  
+ .                               history         CHAR        25   T       FERRET V6.925    7-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
+  
+(x_in_meters)          DOUBLE    units           CHAR        6    T       meters
+                                 point_spacing   CHAR        4    T       even
+                                 axis            CHAR        1    T       X
+                                 orig_file_axnameCHAR        7    F       X13AXIS
+  
+ C                     DOUBLE    missing_value   DOUBLE      1    T       -1.E+34
+                                 _FillValue      DOUBLE      1    T       -1.E+34
+                                 long_name       CHAR        15   T       5*X[GX=X13AXIS]
+  
+ 
+! Intentional errors
+set mode ignore
+ 
+! Name already in use
+set axis/name=days2000 x_in_meters
+ 
+! Missing or illegal name
+set axis/name x_in_meters
+set axis/name=45 x_in_meters
+set axis/name=.fr x_in_meters
+ 
+set mode/last ignore
+ 
+! *********** v6.9+ Additions ***********
+GO bn_reset
+cancel mode verify
+GO bn691_bug_fixes
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
+ 
+GO bn_reset
+cancel mode verify
+GO err69_arg_type_error
+! err69_arg_type_error
+! See ticket 2169
+!
+set mode ignore
+sh func  tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+    A: time steps to convert
+    B: variable with reference time axis
+    C: output precision (STRING)
+sh func /detail tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+        Axes of result:
+          X: inherited from argument(s)
+          Y: inherited from argument(s)
+          Z: inherited from argument(s)
+          T: inherited from argument(s)
+          E: inherited from argument(s)
+          F: inherited from argument(s)
+    A: time steps to convert (FLOAT)
+        Influence on output axes:
+          X: passed to result grid
+          Y: passed to result grid
+          Z: passed to result grid
+          T: passed to result grid
+          E: passed to result grid
+          F: passed to result grid
+    B: variable with reference time axis (FLOAT)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+    C: output precision (STRING)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+ 
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+             VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes")
+             TIME     : 03-JAN-2000 00:00
+        "03-JAN-2000 00:00"
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ 
+set mode /last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_bad_bounds
+! err69_bad_bounds.jnl
+! See ticket 2170
+ 
+set mode ignore
+ 
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_even.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_PTSPAC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_non_enclose.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_uneven.nc
+             TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_IRR)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  7.000
+13-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  4.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+sh axis TAX_BB*
+ name       axis              # pts   start                end
+ TAX_BB_IRR TIME                6 i   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 31
+ TAX_BB_EVEN_NOENC TIME         6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ TAX_BB_PTSPAC TIME             6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_const_array
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174
+! expressions are not allowed in constant-array definitions.
+ 
+set mode ignore
+ 
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
+ 
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
+ 
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
+ 
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+ 
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+             VARIABLE : {-0.001, 1.23E-2, -45.E3}
+             SUBSET   : 3 points (X)
+ 1   / 1:     -0.001
+ 2   / 2:      0.012
+ 3   / 3: -45000.000
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_multi_label_ascii
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM
+! ticket 2176
+! Multi-line labels and ascii fonts.
+ 
+plot/vs/nolab {0,1},{0,1}
+ 
+ 
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+ 
+ 
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+ 
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+ 
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+ 
+! escape just the special characters.
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+ 
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ens_badvalue
+! err69_ens_badvalue.jnl
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled
+! when defining an ensemble.
+ 
+use maize_1.nc, maize_2.nc, maize_3.nc
+ 
+! Note the _FillValue,  flag
+sho att maize_yield
+     attributes for dataset: ./maize_3.nc
+ MAIZE_YIELD._FillValue = 9.96921E+36
+ MAIZE_YIELD.long_name =  Maize harvest 
+ MAIZE_YIELD.units = kgC.m-2.yr-1 
+ MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize 
+ensemble ens = 1,2,3
+ 
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
+             LONGITUDE: 8W(-8) to 6W(-6)
+             LATITUDE: 29.25N
+             E: 0.5 to 3.5 (number of valid)
+ Column  1: MAIZE_YIELD[D=maize_1] is  Maize harvest (kgC.m-2.yr-1)
+ Column  2: MAIZE_YIELD[D=maize_2] is  Maize harvest (kgC.m-2.yr-1)
+ Column  3: MAIZE_YIELD[D=maize_3] is  Maize harvest (kgC.m-2.yr-1)
+ Column  4: MAIZE_YIELD[D=ENS,E=@NGD] is  Maize harvest (# of points)
+        MAIZE_YIELD  MAIZE_YI MAIZE_Y MAIZE_YIELD
+7.75W  / 1:     ....  0.05247  0.1022   2.000
+7.25W  / 2:  0.01818  0.03588  0.0049   3.000
+6.75W  / 3: -0.00002  0.02030 -0.0139   3.000
+6.25W  / 4:     ....     ....    ....   0.000
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_by_levels
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_histogram
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
+ 
+GO bn_reset
+cancel mode verify
+GO err69_repl_scinot
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+ 
+let a = 1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (1.E-10)
+(1.E-10)
+ 
+let a = -1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.E-10)
+(-1.E-10)
+ 
+let a = -1.23e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.23E-10)
+(-1.23E-10)
+ 
+let a = -1.23e-2
+say (`a`)
+ !-> MESSAGE/CONTINUE (-0.0123)
+(-0.0123)
+ 
+GO bn_reset
+cancel mode verify
+GO err691_bnds_case
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+ 
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+ 
+set mode/last upcase_output
+ 
+GO bn_reset
+cancel mode verify
+GO err69_plot_vs_labs
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
+ 
+use coads_climatology
+ 
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+set v right; plot/vs c,b; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+set v right; plot/trans/vs c,b; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+GO bn_reset
+cancel mode verify
+GO err69_levels_v
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes
+! made to throw out data outside 3 std when
+! computing the mean and std dev for color levels.
+ 
+use "lev_v_bug.nc"
+shade/lev=v var2d
+ 
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+LEV_TEXT = "V"
+LEV_HISTO_LEVELS = "1.1,1.2,1.6,1.9,2.4,2.5,3.8,5.4,10.2,13.6,14.9"
+LEV_MIN = "-1.E+34"
+LEV_NUM = "52"
+LEV_DEL = "2.0000E+32"
+LEV_MAX = "4.0000E+32"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_letd_dsetnum
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
+ 
+use coads_climatology
+let/d=`sst,r=dsetnum` a = 1
+ !-> DEFINE VARIABLE/d=1 a = 1
+sh dat
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ ------------------------------
+ A[D=coads_climatology] = 1
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_long_string_to_xml
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+!
+ 
+list/clobber/file="out.xml"/nohead/norow 1
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+ 
+sp cat out.xml
+   1.000
+<mytag><![CDATA[Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC200406 [...]
+ 
+GO bn_reset
+cancel mode verify
+GO err69_fill_trans
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+ 
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+ 
+list myvar
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             SUBSET   : 15 points (X)
+ 1    /  1:  1.000
+ 2    /  2:  2.000
+ 3    /  3:  3.000
+ 4    /  4:   ....
+ 5    /  5:   ....
+ 6    /  6:   ....
+ 7    /  7:   ....
+ 8    /  8:   ....
+ 9    /  9:   ....
+ 10   / 10:  4.000
+ 11   / 11:   ....
+ 12   / 12:  5.000
+ 13   / 13:  6.000
+ 14   / 14:  7.000
+ 15   / 15:  8.000
+list myvar[x=6 at fnr:2]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 2 pts)
+        ....
+ 
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 10 pts)
+          3.000
+ 
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (ave-filled by 18 pts)
+          4.500
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_load_big_grid
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+ 
+set mode ignore
+ 
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+ 
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+    GRID (G087)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              1828 r   01-JAN-2000 00:00    01-JAN-2005 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+    GRID (G087)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              3654 r   01-JAN-2000 00:00    01-JAN-2010 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+cancel mode ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_write_attribute
+! err69_write_attribute.jnl
+! Bug 1863
+ 
+use gt4d011.cdf
+sh grid temp
+    GRID PS3DT21
+ name       axis              # pts   start                end
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+ TIME16    TIME                25 r   17-AUG-1982 12:00    10-JAN-1983 12:00
+ normal    E
+ normal    F
+let a = temp[x=@ave,y=@ave,L=1]
+ 
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (PSZT2).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double A(TIME16, PSZT21_10) ;
+ 
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double B(TIME16, PSZT21_10) ;
+ 
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i  "PSZT2"
+	PSZT21_10 = 10 ;
+	double PSZT21_10(PSZT21_10) ;
+		PSZT21_10:units = "meters" ;
+		PSZT21_10:positive = "down" ;
+		PSZT21_10:standard_name = "depth" ;
+		PSZT21_10:bounds = "PSZT21_10_bnds" ;
+	double PSZT21_10_bnds(PSZT21_10, bnds) ;
+	double C(PSZT21_10) ;
+ 
+can data/all
+can var/all
+ 
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+ 
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+ 
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+ 
+use aa
+use bb
+set data 1
+ 
+show att (`temp,r=zaxis`)
+ !-> show att (ZZDEP)
+     attributes for dataset: ./aa.nc
+ (ZZDEP).point_spacing = uneven 
+ (ZZDEP).axis = Z 
+ (ZZDEP).bounds = ZZDEP_bnds 
+ (ZZDEP).positive = down 
+ (ZZDEP).standard_name = depth 
+ (ZZDEP).orig_file_axname = ZZDEP 
+ 
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP1).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP1
+	ZZDEP1 = 15 ;
+	double ZZDEP1(ZZDEP1) ;
+		ZZDEP1:axis = "Z" ;
+		ZZDEP1:bounds = "ZZDEP1_bnds" ;
+		ZZDEP1:positive = "down" ;
+		ZZDEP1:standard_name = "depth" ;
+	double ZZDEP1_bnds(ZZDEP1, bnds) ;
+	double A(ZZDEP1) ;
+ 
+let a = temp[d=2,gz=temp[d=1]]
+ 
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+ 
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+sp rm aa.nc bb.nc
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_countervar_context
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+ 
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+!-> REPEAT: B:1
+ !-> MESSAGE/CONTINUE 1
+1
+!-> REPEAT: B:2
+ !-> MESSAGE/CONTINUE 2
+2
+!-> REPEAT: B:3
+ !-> MESSAGE/CONTINUE 3
+3
+ 
+can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_label_backspace
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+ 
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_append_dsg
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced.
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!
+! We append more variables to the file, using the same obs dimension.
+ 
+sp rm test_save_dsg.nc
+sp cp test_save_dsg_in.nc test_save_dsg.nc
+ 
+use test_save_dsg.nc
+ 
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+ 
+save/quiet/append/file=test_save_dsg.nc lon360
+ 
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+ 
+sp ncdump -h test_save_dsg.nc
+netcdf test_save_dsg {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:History = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "CF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+}
+ 
+GO bn_reset
+cancel mode verify
+GO bn_global_atts
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41
+ 
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+netcdf global {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventions" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+sp ncdump -h global_copy.nc
+netcdf global_copy {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0FERRET V6.925    7-Oct-14" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventionsCF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+ 
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+ 
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.71    9-May-14 
+ ..Conventions = Existing conventions note, CF-1.0 
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.925    7-Oct-14 
+ ..Conventions = Existing conventions note, , CF-1.6 
+ 
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_conventions_history
+! bn_conventions_history.jnl
+! ticket 2169:
+! Write conventions CF-1.6
+! When appending to the Conventions and history
+! attribute, add the new stuff with a comma and newline.
+ 
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the file 
+ ..Conventions = Conventions for variables named V2 
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the fileFERRET V6.925    7-Oct-14 
+ ..Conventions = Conventions for variables named V2CF-1.6 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_center_key_labels
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key
+ 
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+ 
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+ 
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+ 
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+ 
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up
+ 
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+ 
+can data coads_climatology
+ 
+! Automatically restore regular handling of levels
+shade temp
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_wgt_transform
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+ 
+! Define an XYT grid
+ 
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+ 
+! Varies in y with latitude correction
+shade/l=1 weights
+ 
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+             VARIABLE : VAR[X=@WGT,Y=@WGT]
+             LONGITUDE: 1E to 1E(361) (XY summed)
+             LATITUDE : 90S to 90N (XY summed)
+             TIME     : 16-JAN 12:00
+          5.101E+14
+ 
+! Varies in T because of irregular t axis
+shade/x=1 weights
+ 
+ 
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+ 
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+             TIME: 01-JAN 00:00 to 31-DEC 05:49
+             LONGITUDE: 1E (interpolated)
+             LATITUDE: 1N
+ Column  1: MYWT is VAR[T=@WGT]
+ Column  2: EX#2 is MYWT/SECPERDAY
+                         MYWT   EX#2
+16-JAN 12      /  1:  2678400.  31.00
+15-FEB 02      /  2:  2440152.  28.24
+15-MAR 17      /  3:  2678400.  31.00
+15-APR 05      /  4:  2592000.  30.00
+15-MAY 17      /  5:  2678400.  31.00
+15-JUN 05      /  6:  2592000.  30.00
+15-JUL 17      /  7:  2678400.  31.00
+15-AUG 17      /  8:  2678400.  31.00
+15-SEP 05      /  9:  2592000.  30.00
+15-OCT 17      / 10:  2678400.  31.00
+15-NOV 05      / 11:  2592000.  30.00
+15-DEC 17      / 12:  2678400.  31.00
+ 
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 9 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:  10.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:  10.00
+ 55    / 6:  10.00
+ 65    / 7:  10.00
+ 75    / 8:  10.00
+ 85    / 9:   2.00
+ 
+! This finds the previous result in memory - needs to
+! reuse the correct one.
+ 
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130W (interpolated)
+             LATITUDE : 1.5N (interpolated)
+             TIME     : 01-SEP-1982 00:00 (interpolated)
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+GO bn_reset
+cancel mode verify
+GO bn_show_outfile
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE=
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+ 
+! test various combinations of /append and /clobber
+ 
+!can mode verify
+ 
+! show axis/outfile
+ 
+ 
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+ 
+SAY ---------------- Just axis month_irreg
+---------------- Just axis month_irreg
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ 
+show axis/append/outfile=a.txt PS*
+ 
+SAY ---------------- appending all axes starting with PS
+---------------- appending all axes starting with PS
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = axis span)
+ PSXU      LONGITUDE          160mr   131E                 70W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT      Y (seconds)        100 i   -28.836              48.568
+   Axis span (to cell edges) = 80.00004
+ PSYU      LATITUDE           100 i   27.672S              50N
+   Axis span (to cell edges) = 80.2682
+ PSZT      Z (zorro)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSZW      DEPTH (m)           27 i-  10                   4149
+   Axis span (to cell edges) = 4144
+ PSYT5_89  LATITUDE            85 i   20.151S              21.613N
+   Axis span (to cell edges) = 43.60417
+ PSZT1_2   DEPTH (m)            2 r-  5                    15
+   Axis span (to cell edges) = 20
+ PSZT2     DEPTH (m)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSXT1     LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT1     LATITUDE           100 i   28.836S              48.568N
+   Axis span (to cell edges) = 80.00004
+ PSZT1     Z (METERS)          27 i   5                    3824
+   Axis span (to cell edges) = 4149
+ 
+! show grid/outfile
+ 
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just the grid of sst
+---------------- Just the grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+! show var/outfile
+ 
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+ 
+SAY ---------------- show var output from two user vars
+---------------- show var output from two user vars
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+cancel var/all
+ 
+! show data/outfile
+ 
+show data/append/outfile=a.txt
+ 
+SAY ---------------- appending show data
+---------------- appending show data
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+! combinations of /append and /clobber
+ 
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+ 
+SAY ---------------- Just show data, two show data/clobber commands in a row
+---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just grid of sst
+---------------- Just grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME10    TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+use coads_climatology
+use levitus_climatology
+ 
+show data/clobber/outfile=a.txt 1
+ 
+SAY ---------------- Just dataset 1
+---------------- Just dataset 1
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show data/append/outfile=a.txt levitus_climatology
+ 
+SAY ---------------- appending datset 2 by name
+---------------- appending datset 2 by name
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+     currently SET data sets:
+    2> ./levitus_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                      1:160     1:90      1:1       ...       ...       ...
+ 
+show grid/clobber/outfile=a.txt PS3*
+ 
+SAY ---------------- only showing all grids starting with PS3
+---------------- only showing all grids starting with PS3
+sp cat a.txt
+      PS3DT
+      PS3DU
+      PS3DW
+      PS3DT2
+ 
+SAY ---------------- tests sending output of vtree to a file
+---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+! bn_tree_outfile.jnl
+ 
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+ 
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+ 
+!
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+   A = 1
+ 
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+   C = SIN(B)
+     B = 1
+ 
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+ 
+! ================
+ 
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1
+   FV1[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+a is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   A = FV1 + FVX
+     FV1
+     FVX
+   in default dataset my_file_vars
+   A = FV1 + FVX
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset other_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1[d=my_file_var]
+     FV1
+********************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: V[D=NOEXIST]
+************************
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   V[D=NOEXIST]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: NOVAR[D=NODSET]
+************************
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   NOVAR[D=NODSET]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+RESHAPE(fvx,fvz) is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FVX
+   FVZ
+   FVX[d=my_file_vars]
+   FVZ[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+     FV1
+       FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+   NOEXIST  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   NOEXIST[GZ(DEPTH)=ZPTS]  (unknown variable)
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+   NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]  (unknown variable)
+   UNKNOWN_AUX  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+     FV1[d=my_file_var]
+     FV1[d=other_file_var]
+     FV1[d=another_file_var]
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+ 
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fvx is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=my_file_var]
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=other_file_var]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=another_file_var]
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+ 
+   FVX[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ILLEGAL RECURSIVE VARIABLES: P1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S3  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: S1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S1  (unknown variable)
+   S3  (unknown variable)
+   in default dataset my_file_vars
+   FV = FV1 + FV1 + FV1
+   in default dataset MY_UVAR_AGG
+   FV = FV1 + FV1 + FV1
+     FV1   (aggregate variable)
+   in default dataset other_file_vars
+   UV = FVX + FVX + FVX
+     FVX = FV1 + X[GX=FVX[D=1],I=1:3]
+   in default dataset MY_UVAR_AGG
+   UV = FVX + FVX + FVX
+     FVX   (aggregate variable)
+       FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+***************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v2 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+         FV1[d=my_file_var]
+         FV1[d=other_file_var]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v3 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+       FV1[d=my_file_var]
+       FV1[d=other_file_var]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: F
+************************
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+       FV1[d=my_file_var]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   FVX[d=my_file_var]
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   F  (unknown variable)
+   FV1[d=my_file_vars]
+   NOEXIST  (unknown variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN GRID: A[G=NOEXIST]
+************************
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   A[G=NOEXIST]  (unknown grid)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[X=45S]
+************************
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   A[X=45S]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[I=1,,J=2]
+************************
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   A[I=1,,J=2]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[P=1]
+************************
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   A[P=1]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+f is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   A = FVZ.LONG_NAME[D=1]
+   in default dataset MY_UVAR_AGG
+   A = ..HISTORY[D=1]
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_date1900_array
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
+ 
+ 
+sh func/details date1900
+DATE1900(formatted date)
+    Convert date strings into Julian days since 1-Jan-1900
+        Axes of result:
+          X: inherited from argument(s)
+          Y: NORMAL (no axis)
+          Z: NORMAL (no axis)
+          T: NORMAL (no axis)
+          E: NORMAL (no axis)
+          F: NORMAL (no axis)
+    formatted date: dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00") (none) (STRING)
+        Influence on output axes:
+          X: passed to result grid
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+             VARIABLE : DATE1900("01-jan-2001")
+          36890.
+ 
+ 
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+             VARIABLE : DATE1900(DATESTRINGS)
+             SUBSET   : 3 points (X)
+ 1   / 1:  36890.
+ 2   / 2:  36891.
+ 3   / 3:  37465.
+ 
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+             VARIABLE : T
+                        axis TAXIS
+             SUBSET   : 3 points (TIME)
+ 01-JAN-2001 00 / 1:  36890.
+ 02-JAN-2001 00 / 2:  36891.
+ 30-JUL-2002 00 / 3:  37465.
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO bn_spawn_size
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not
+! the nominalabstract axis length.
+ 
+! ticket 981
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+             VARIABLE : {SPAWN:"ls *cdf*.jnl"}
+             SUBSET   : 8 points (X)
+ 1   / 1:"bn_cdf_errmsg.jnl"      
+ 2   / 2:"bn_cdf.jnl"             
+ 3   / 3:"bn_cdf_keepax.jnl"      
+ 4   / 4:"bn_netcdf4.jnl"         
+ 5   / 5:"err490_cdf_childax.jnl" 
+ 6   / 6:"err491_cdf_childax.jnl" 
+ 7   / 7:"err65_read_epic_cdf.jnl"
+ 8   / 8:"err667_5d_netcdf.jnl"   
+say `files,return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+ !-> MESSAGE/CONTINUE 36
+36
+ 
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+ !-> MESSAGE/CONTINUE 3
+3
+list {spawn:"ls xml*.jnl"}
+             VARIABLE : {SPAWN:"ls xml*.jnl"}
+             SUBSET   : 3 points (X)
+ 1   / 1:"xml_header_script.jnl"
+ 2   / 2:"xml_use_coads.jnl"    
+ 3   / 3:"xml_use_numstring.jnl"
+ 
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
+ 
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+ !-> MESSAGE/CONTINUE 829
+829
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
  
 !  *********** Always do a bn_reset  ***********
 !  *********** make sure things clean up well **
@@ -76211,9 +78471,9 @@ yes? ! run bn_all_ef tests
 yes? 
 yes? GO bn_all_ef
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14
- 	26-Mar-14 15:39     
+ 	FERRET v6.925  
+ 	Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14
+ 	 7-Oct-14 10:44     
 
 SET MODE VERIFY
 ! bn_all_ef.jnl
@@ -77067,8 +79327,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969 ;
@@ -77092,8 +79352,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969, 50757974 ;
@@ -77116,8 +79376,8 @@ variables:
 		B:long_name = "\"one line of text\"" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -77155,8 +79415,8 @@ variables:
 		D:history = "From test_string" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  GFP3 = "" ;
@@ -77190,8 +79450,8 @@ variables:
 		B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_4 = 1, 2, 3, 4 ;
@@ -77231,8 +79491,8 @@ variables:
 		V:long_name = "T[GT=MONTH_IRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 
@@ -77288,8 +79548,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77345,8 +79605,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -77400,8 +79660,8 @@ variables:
 		T2:long_name = "Z[GZ=ZIRR]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  ZIRR = 0, 10, 40, 70 ;
@@ -77448,8 +79708,8 @@ variables:
 		V:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_83 = 181, 183, 185 ;
@@ -77542,8 +79802,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77612,8 +79872,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -77663,8 +79923,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -77738,8 +79998,8 @@ variables:
 		A:long_name = "T[GT=TIME]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 0.5, 2 ;
@@ -77765,8 +80025,8 @@ variables:
 		X_:long_name_mod = "axis ABSTRACT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ;
 data:
 
@@ -77789,8 +80049,8 @@ variables:
 		A:history = "From x" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title, longer than the previous limit of 80 characters.  Previously various buffers were set to 80, and storage in ds_title was also too short." ;
 data:
 
@@ -77816,11 +80076,11 @@ variables:
 		A:history = "From t0_cdc" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_long_revision_num.jnl --- history attribute
-		:history = "FERRET V6.861   26-Mar-14" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
 bn_bounds_defineax.jnl --- N+1 def of bounds.
 netcdf irrxzt {
 dimensions:
@@ -77851,8 +80111,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -77923,8 +80183,8 @@ variables:
 		VAR_B:long_name = "my strings" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -77967,8 +80227,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX105_105 = 229 ;
@@ -78009,8 +80269,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -78117,8 +80377,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 6 after CANCEL MODE upcase_output
 netcdf a {
@@ -78158,8 +80418,8 @@ variables:
 		Elev:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 7 outtput flags to control attribute output
 netcdf a {
@@ -78181,8 +80441,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78207,8 +80467,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78227,8 +80487,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78248,8 +80508,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -78291,8 +80551,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 12 Check that settings hold for child axis.
 netcdf a {
@@ -78331,8 +80591,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 13 cancel output of attributes of the variable.
 netcdf a {
@@ -78369,40 +80629,40 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 14 attributes of data from ez data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX042 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float A1(XAX1_5) ;
+	double AX042(AX042) ;
+		AX042:point_spacing = "even" ;
+		AX042:axis = "X" ;
+	float A1(AX042) ;
 		A1:missing_value = -1.e+34f ;
 		A1:_FillValue = -1.e+34f ;
 		A1:long_name = "A1" ;
 		A1:three = 1.f, 2.f, 3.f ;
 		A1:history = "From EZ.DAT" ;
-	float A2(XAX1_5) ;
+	float A2(AX042) ;
 		A2:missing_value = -1.e+34f ;
 		A2:_FillValue = -1.e+34f ;
 		A2:long_name = "A2" ;
 		A2:history = "From EZ.DAT" ;
-	float A3(XAX1_5) ;
+	float A3(AX042) ;
 		A3:missing_value = -1.e+34f ;
 		A3:_FillValue = -1.e+34f ;
 		A3:long_name = "A3" ;
 		A3:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX042 = 1, 2, 3, 4, 5 ;
 
  A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78413,29 +80673,29 @@ data:
 bn_attributes.jnl --- 15 attributes of data from delimited data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX009 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float V1(XAX1_5) ;
+	double AX009(AX009) ;
+		AX009:point_spacing = "even" ;
+		AX009:axis = "X" ;
+	float V1(AX009) ;
 		V1:missing_value = -1.e+34f ;
 		V1:_FillValue = -1.e+34f ;
 		V1:long_name = "V1" ;
 		V1:strval = "2" ;
 		V1:history = "From EZ.DAT" ;
-	float V4(XAX1_5) ;
+	float V4(AX009) ;
 		V4:missing_value = -1.e+34f ;
 		V4:_FillValue = -1.e+34f ;
 		V4:long_name = "V4" ;
 		V4:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX009 = 1, 2, 3, 4, 5 ;
 
  V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -78457,8 +80717,8 @@ variables:
 		A:four = "theory" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -78503,8 +80763,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:simulation = "K-Bay OAR3d model (200m)" ;
 		:start_date = "980105000000" ;
 		:option = 0 ;
@@ -78610,8 +80870,8 @@ variables:
 		TEMP:units = "deg. C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:dt_internal = 15. ;
 }
 bn_attributes.jnl --- 19 scale and offset attr.
@@ -78652,8 +80912,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XC = -135.50957036625, -135.496120344706, -135.482670323162, 
@@ -78735,8 +80995,8 @@ variables:
 		RIGUE:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  J = 2, 4, 6 ;
@@ -78772,8 +81032,8 @@ variables:
 		B:long_name = "hello" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  B = 1 ;
@@ -78812,8 +81072,8 @@ variables:
 		VWND:units = "M/S" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -78863,8 +81123,8 @@ variables:
 		T2:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -78922,8 +81182,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -78967,8 +81227,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79010,8 +81270,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79045,8 +81305,8 @@ variables:
 		TEMP:units = "DEG C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79079,8 +81339,8 @@ variables:
 		TWO:history = "From levitus_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 27 attributes of  user-defined axes
 netcdf string4d {
@@ -79109,8 +81369,8 @@ variables:
 		AXY:long_name = "RESHAPE (A,RVAR)" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 28 Define a new global attribute
 bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var
@@ -79138,8 +81398,8 @@ variables:
 		BROILED:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:glob = "Global attribute" ;
 		:FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ;
 data:
@@ -79199,8 +81459,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79244,8 +81504,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79263,8 +81523,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79293,8 +81553,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79323,8 +81583,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -79376,8 +81636,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79418,8 +81678,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -79436,18 +81696,18 @@ variables:
 		V:long_name = "Y[GY=YAXIS]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 err611_set_var_ez.jnl --- 
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_ASC(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_ASC(AX138) ;
 		MY_ASC:missing_value = 3.f ;
 		MY_ASC:_FillValue = 3.f ;
 		MY_ASC:long_name = "chlorophyll" ;
@@ -79455,17 +81715,17 @@ variables:
 		MY_ASC:history = "From dat.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX138 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_UNF(XAX1_3) ;
+	double AX138(AX138) ;
+		AX138:point_spacing = "even" ;
+		AX138:axis = "X" ;
+	float MY_UNF(AX138) ;
 		MY_UNF:missing_value = 5.f ;
 		MY_UNF:_FillValue = 5.f ;
 		MY_UNF:long_name = "Some Unformatted input" ;
@@ -79473,8 +81733,8 @@ variables:
 		MY_UNF:history = "From unf.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- SET VAR/OUTTYPE for user variable
 netcdf a {
@@ -79490,8 +81750,8 @@ variables:
 		A:long_name = "{1.1,2.2,3.3}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -79511,8 +81771,8 @@ variables:
 		A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
@@ -79522,50 +81782,51 @@ data:
 netcdf a {
 dimensions:
 	XAX1_10 = 10 ;
-	TDAY = UNLIMITED ; // (31 currently)
-	LON1_5 = 5 ;
-	LAT1_5 = 5 ;
+	tday = UNLIMITED ; // (31 currently)
+	lon1_5 = 5 ;
+	lat1_5 = 5 ;
 	bnds = 2 ;
-	ZT = 10 ;
-	TIME1478 = 3 ;
+	zt = 10 ;
+	time1478 = 3 ;
 variables:
 	double XAX1_10(XAX1_10) ;
 		XAX1_10:point_spacing = "even" ;
 		XAX1_10:axis = "X" ;
-	double TDAY(TDAY) ;
-		TDAY:units = "days since 1998-12-31 00:00:00" ;
-		TDAY:axis = "T" ;
-		TDAY:calendar = "GREGORIAN" ;
-		TDAY:time_origin = "31-DEC-1998" ;
-		TDAY:standard_name = "time" ;
-	double MyUpperLowerCaseVar(TDAY, XAX1_10) ;
+	double tday(tday) ;
+		tday:units = "days since 1998-12-31 00:00:00" ;
+		tday:axis = "T" ;
+		tday:calendar = "GREGORIAN" ;
+		tday:time_origin = "31-DEC-1998" ;
+		tday:standard_name = "time" ;
+	double MyUpperLowerCaseVar(tday, XAX1_10) ;
 		MyUpperLowerCaseVar:missing_value = -1.e+34 ;
 		MyUpperLowerCaseVar:_FillValue = -1.e+34 ;
 		MyUpperLowerCaseVar:long_name = "X[X=1:10] + T[GT=TDAY]" ;
-	double LON1_5(LON1_5) ;
-		LON1_5:point_spacing = "even" ;
-		LON1_5:axis = "X" ;
-		LON1_5:standard_name = "longitude" ;
-	double LAT1_5(LAT1_5) ;
-		LAT1_5:point_spacing = "uneven" ;
-		LAT1_5:axis = "Y" ;
-		LAT1_5:standard_name = "latitude" ;
-		LAT1_5:bounds = "LAT1_5_bnds" ;
-	double LAT1_5_bnds(LAT1_5, bnds) ;
-	float ZT(ZT) ;
-		ZT:units = "meters" ;
-		ZT:positive = "down" ;
-		ZT:point_spacing = "uneven" ;
-		ZT:axis = "Z" ;
-		ZT:standard_name = "depth" ;
-		ZT:bounds = "ZT_bnds" ;
-	float ZT_bnds(ZT, bnds) ;
-	double TIME1478(TIME1478) ;
-		TIME1478:calendar = "NOLEAP" ;
-		TIME1478:point_spacing = "even" ;
-		TIME1478:axis = "T" ;
-		TIME1478:standard_name = "time" ;
-	double newvar(TIME1478, ZT, LAT1_5, LON1_5) ;
+	double lon1_5(lon1_5) ;
+		lon1_5:point_spacing = "even" ;
+		lon1_5:axis = "X" ;
+		lon1_5:standard_name = "longitude" ;
+	double lat1_5(lat1_5) ;
+		lat1_5:point_spacing = "uneven" ;
+		lat1_5:axis = "Y" ;
+		lat1_5:standard_name = "latitude" ;
+		lat1_5:bounds = "lat1_5_bnds" ;
+	double lat1_5_bnds(lat1_5, bnds) ;
+	float zt(zt) ;
+		zt:long_name = "zt" ;
+		zt:units = "meters" ;
+		zt:positive = "down" ;
+		zt:point_spacing = "uneven" ;
+		zt:axis = "Z" ;
+		zt:standard_name = "depth" ;
+		zt:bounds = "zt_bnds" ;
+	float zt_bnds(zt, bnds) ;
+	double time1478(time1478) ;
+		time1478:calendar = "NOLEAP" ;
+		time1478:axis = "T" ;
+		time1478:point_spacing = "even" ;
+		time1478:standard_name = "time" ;
+	double newvar(time1478, zt, lat1_5, lon1_5) ;
 		newvar:missing_value = -999. ;
 		newvar:_FillValue = -999. ;
 		newvar:long_name = "outgoing longwave radiation" ;
@@ -79573,8 +81834,8 @@ variables:
 		newvar:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- test SAVE/KEEP_AXISNAMES
 netcdf a {
@@ -79600,8 +81861,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES
 netcdf a {
@@ -79627,8 +81888,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, degrees_east, degrees_north, std names on axes:
 netcdf a {
@@ -79693,8 +81954,8 @@ variables:
 		ZUP:long_name = "Z[GZ=ZAXUP]" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:
 netcdf a {
@@ -79725,8 +81986,8 @@ variables:
 		Y_:long_name_mod = "axis YFIFTEEN" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since
 netcdf a {
@@ -79758,8 +82019,8 @@ variables:
 		XYTVAR:history = "From bn_strides" ;
 
 // global attributes:
-		:history = "FERRET V6.861   26-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.925    7-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 -----
 end of ncdump output
@@ -79772,27 +82033,27 @@ yes?
 yes? 
 yes? GO bn_startupfile
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14
- 	26-Mar-14 15:39     
+ 	FERRET v6.925  
+ 	Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14
+ 	 7-Oct-14 10:44     
 
 CAN MODE VERIFY
- Current size of FERRET memory cache: 31 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 31 MegaWords  (1 word = 8 bytes)
 PPL$XPIXEL = "656"
 PPL$YPIXEL = "492"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.861"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.925"
+FERRET_PLATFORM = "Linux 2.6.18-371.12.1.el5 64-bit"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "31"
-SESSION_DATE = "26-Mar-14"
-SESSION_TIME = "15:39"
-SESSION_PID = "25407"
-DELTA_CPU = "0.034994"
-CLOCK_SECS = "0.164"
-CURRENT_DATE = "26-Mar-14"
-CURRENT_TIME = "15:39:34"
+SESSION_DATE = " 7-Oct-14"
+SESSION_TIME = "10:44"
+SESSION_PID = "14783"
+DELTA_CPU = "0.031994"
+CLOCK_SECS = "0.316"
+CURRENT_DATE = " 7-Oct-14"
+CURRENT_TIME = "10:44:12"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 LAST_GO_FILE = "./bn_startupfile.jnl"
@@ -79814,7 +82075,7 @@ PPL$VIEW_X = "0.000"
 PPL$VIEW_Y = "0.000"
 PPL$VIEW_Z = "0.000"
 PPL$COMMAND_FILE = "$$MEMBUF$$"
-WIN_TITLE = "26-Mar-14:15:39"
+WIN_TITLE = "7-Oct-14:10:44"
 VP_WIDTH = "10.2"
 VP_HEIGHT = "8.8"
 VP_SCALE = "1"
@@ -79876,9 +82137,9 @@ yes?
 yes? 
 yes? GO bn_gif
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14
- 	26-Mar-14 15:39     
+ 	FERRET v6.925  
+ 	Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14
+ 	 7-Oct-14 10:44     
 
 ! bn450_gif.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of gif file in batch mode using
@@ -79939,7 +82200,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= .gif                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     [...]
@@ -80095,9 +82356,9 @@ yes?
 yes? 
 yes? GO bn_ps
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14
- 	26-Mar-14 15:39     
+ 	FERRET v6.925  
+ 	Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14
+ 	 7-Oct-14 10:44     
 
 ! bn450_ps.JNL - copied from bn450_plot.jnl
 ! this journal file only tests the writing of ps files in batch mode using
@@ -80158,7 +82419,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= bnplot.ps                                                                                                                                                                                                                                                                                                                                                                                                                                                                                [...]
@@ -80209,9 +82470,9 @@ yes?
 yes? 
 yes? GO bn_batch_metafile
  	NOAA/PMEL TMAP
- 	FERRET v6.861  
- 	Linux 2.6.18-371.4.1.el5 64-bit - 03/26/14
- 	26-Mar-14 15:39     
+ 	FERRET v6.925  
+ 	Linux 2.6.18-371.12.1.el5 64-bit - 10/07/14
+ 	 7-Oct-14 10:44     
 
 ! bn_batch_metafile.jnl
 ! Run at the end of the benchmark scripts, starting ferret with the flags
@@ -80295,4 +82556,4 @@ set window/location=0.1,0.1/title="another title"
  
 set mode/last logo
 exit/command
-Ended at Wed Mar 26 15:39:36 PDT 2014
+Ended at Tue Oct 7 10:44:14 PDT 2014
diff --git a/bench/badbounds_even.nc b/bench/badbounds_even.nc
new file mode 100644
index 0000000..95f811b
Binary files /dev/null and b/bench/badbounds_even.nc differ
diff --git a/bench/badbounds_non_enclose.nc b/bench/badbounds_non_enclose.nc
new file mode 100644
index 0000000..b4f1a14
Binary files /dev/null and b/bench/badbounds_non_enclose.nc differ
diff --git a/bench/badbounds_uneven.nc b/bench/badbounds_uneven.nc
new file mode 100644
index 0000000..6d14352
Binary files /dev/null and b/bench/badbounds_uneven.nc differ
diff --git a/bench/bn691_bug_fixes.jnl b/bench/bn691_bug_fixes.jnl
new file mode 100644
index 0000000..ddeb2e5
--- /dev/null
+++ b/bench/bn691_bug_fixes.jnl
@@ -0,0 +1,75 @@
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
+
+GO bn_reset
+GO err69_arg_type_error
+
+GO bn_reset
+GO err69_bad_bounds
+
+GO bn_reset
+GO err69_const_array
+
+GO bn_reset
+GO err69_multi_label_ascii
+
+GO bn_reset
+GO err69_ens_badvalue
+
+GO bn_reset
+GO err69_ribbon_by_levels
+
+GO bn_reset
+GO err69_ribbon_histogram
+
+GO bn_reset
+GO err69_repl_scinot
+
+GO bn_reset
+GO err691_bnds_case
+
+GO bn_reset
+GO err69_plot_vs_labs
+
+GO bn_reset
+GO err69_levels_v
+
+GO bn_reset
+GO err69_letd_dsetnum
+
+GO bn_reset
+GO err69_long_string_to_xml
+
+GO bn_reset
+GO err69_fill_trans
+
+GO bn_reset
+GO err69_load_big_grid
+
+GO bn_reset
+GO err69_write_attribute
+
+GO bn_reset
+GO err69_isready_status_errmsgs
+
+GO bn_reset
+GO err69_isready_status_errmsgs
+
+GO bn_reset
+GO err69_countervar_context
+
+GO bn_reset
+GO err69_label_backspace
+
+GO bn_reset
+GO err69_isready_and_regridding
+
+GO bn_reset
+GO err69_vtree_and_uvar_regrid
+
+GO bn_reset
+GO err69_vtree_cancel_axis
+
+GO bn_reset
+GO err69_isready_bugs
diff --git a/bench/bn69_bug_fixes.jnl b/bench/bn69_bug_fixes.jnl
index 9a40ca0..aaeccc1 100644
--- a/bench/bn69_bug_fixes.jnl
+++ b/bench/bn69_bug_fixes.jnl
@@ -1,5 +1,5 @@
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
 
 GO bn_reset
diff --git a/bench/bn_all.jnl b/bench/bn_all.jnl
index 9d2ccc2..0dc4945 100644
--- a/bench/bn_all.jnl
+++ b/bench/bn_all.jnl
@@ -901,6 +901,36 @@ GO bn_stddev
 GO bn_reset
 GO bn_set_axis_name
 
+! *********** v6.9+ Additions ***********
+GO bn_reset
+GO bn691_bug_fixes
+
+GO bn_reset
+GO bn_append_dsg
+
+GO bn_reset
+GO bn_global_atts
+
+GO bn_reset
+GO bn_conventions_history
+
+GO bn_reset
+GO bn_center_key_labels
+
+GO bn_reset
+GO bn_wgt_transform
+
+GO bn_reset
+GO bn_show_outfile
+
+GO bn_reset
+GO bn_date1900_array
+
+GO bn_reset
+GO bn_spawn_size
+
+GO bn_reset
+GO bn_polygon_log
 
 !  *********** Always do a bn_reset  *********** 
 !  *********** make sure things clean up well **
diff --git a/bench/bn_append_dsg.jnl b/bench/bn_append_dsg.jnl
new file mode 100644
index 0000000..42b7264
--- /dev/null
+++ b/bench/bn_append_dsg.jnl
@@ -0,0 +1,30 @@
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced. 
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!  
+! We append more variables to the file, using the same obs dimension.
+
+sp rm test_save_dsg.nc 
+sp cp test_save_dsg_in.nc test_save_dsg.nc 
+
+use test_save_dsg.nc
+
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+
+save/quiet/append/file=test_save_dsg.nc lon360 
+
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+
+sp ncdump -h test_save_dsg.nc
diff --git a/bench/bn_axis_viewports.jnl b/bench/bn_axis_viewports.jnl
index 1fc640a..de6735a 100644
--- a/bench/bn_axis_viewports.jnl
+++ b/bench/bn_axis_viewports.jnl
@@ -28,12 +28,14 @@ set view mid2
 ppl origin 0,0
 define symbol xaxl `($PPL$WIDTH)/2`
 define symbol yaxl `($PPL$HEIGHT)/2`
-ppl axlen `1.375 + ($xaxl) + 1.375`,`1.375 + ($yaxl) + 1.375`
-plot/vs/hlim=-1.375:`($xaxl)+1.375`:0.25/vlim=-1.375:`($yaxl)+1.375`:0.25/nolab/nolab {0,($xaxl)}, {0,($yaxl)}
+ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4`
+plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/nolab {0,($xaxl)}, {0,($yaxl)}
+
+! pause
+set window/clear
 
 ! again with scale determined automatically
 ! make guide lines
-set window/clear
 set view allax
 plot/vs/line/hlim=0:1/vlim=0:1/nolab {0.5,0.5,,0,1},{0,1,,0.5,0.5}
 plot/vs/line/over/nolab {0.25,0.25,,0,1},{0,1,,0.25,0.25}
@@ -55,9 +57,10 @@ set view mid2
 ppl origin 0,0
 define symbol xaxl `($PPL$WIDTH)/2`
 define symbol yaxl `($PPL$HEIGHT)/2`
-ppl axlen `1.375 + ($xaxl) + 1.375`,`1.375 + ($yaxl) + 1.375`
-plot/vs/hlim=-1.375:`($xaxl)+1.375`:0.25/vlim=-1.375:`($yaxl)+1.375`:0.25/nolab/line {0,($xaxl)}, {0,($yaxl)}
+ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4`
+plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/line {0,($xaxl)}, {0,($yaxl)}
 
+! pause
 set wind/clear
 
 ! a full window plot
@@ -65,6 +68,7 @@ set view allax
 plot/vs/hlim=-1:1/vlim=-1:1/line/i=1:200/noyadj cos(i/15),sin(i/15)
 show view mid
 
+! pause
 set wind/clear
 
 def view/axes/xlim=0:0.5/ylim=0:0.5/text=1 llax
@@ -91,9 +95,10 @@ PLOT/VS/LINE/I=1:314/noyadj i*cos(i/20),i*sin(i/20)
 ppl list xaxis
 ppl list yaxis
 
-! again with viewport scaling determined automatically
+! pause
 set wind/clear
 
+! again with viewport scaling determined automatically
 def view/axes/xlim=0:0.5/ylim=0:0.5 llax
 show view llax
 set view llax
@@ -122,7 +127,9 @@ PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20)
 ppl list xaxis
 ppl list yaxis
 
+! pause
 cancel view
+
 go ptest
 ppl list xaxis
 ppl list yaxis
diff --git a/bench/bn_center_key_labels.jnl b/bench/bn_center_key_labels.jnl
new file mode 100644
index 0000000..40150ef
--- /dev/null
+++ b/bench/bn_center_key_labels.jnl
@@ -0,0 +1,43 @@
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key 
+
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up 
+
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+can data coads_climatology
+
+! Automatically restore regular handling of levels
+shade temp
+
diff --git a/bench/bn_conventions_history.jnl b/bench/bn_conventions_history.jnl
new file mode 100644
index 0000000..3d6e31c
--- /dev/null
+++ b/bench/bn_conventions_history.jnl
@@ -0,0 +1,19 @@
+! bn_conventions_history.jnl
+! ticket 2169: 
+! Write conventions CF-1.6
+! When appending to the Conventions and history 
+! attribute, add the new stuff with a comma and newline.
+
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
diff --git a/bench/bn_date1900_array.jnl b/bench/bn_date1900_array.jnl
new file mode 100644
index 0000000..20c1c7c
--- /dev/null
+++ b/bench/bn_date1900_array.jnl
@@ -0,0 +1,18 @@
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
+
+
+sh func/details date1900
+
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+
+
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+
diff --git a/bench/bn_dsg_e_x.jnl b/bench/bn_dsg_e_x.jnl
index af0f8e4..64af4b5 100644
--- a/bench/bn_dsg_e_x.jnl
+++ b/bench/bn_dsg_e_x.jnl
@@ -11,3 +11,15 @@ sh dat
 sh att profile
 sh grid rowsize
 sh grid sal
+
+! This file from the datset "West Coast Carbon cruises" in our 
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+
+sh dat 2
+sh att (profile)
+sh grid rowsize
+sh grid pco2
diff --git a/bench/bn_global_atts.jnl b/bench/bn_global_atts.jnl
new file mode 100644
index 0000000..df25c5a
--- /dev/null
+++ b/bench/bn_global_atts.jnl
@@ -0,0 +1,29 @@
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41     
+
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+sp ncdump -h global_copy.nc
+
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+
+
+
diff --git a/bench/bn_plot.jnl b/bench/bn_plot.jnl
index 61653b0..b60f16e 100644
--- a/bench/bn_plot.jnl
+++ b/bench/bn_plot.jnl
@@ -136,7 +136,7 @@ plot/i=1:10/ylimits=1:40/nolabel i      ! note that /nolabel supresses XLAB
 plot/i=1:10/over/sym=2 i^1.1
 plot/i=1:10/over/sym=2/size=.12 i^1.2
 plot/i=1:10/over/sym=2/color=red i^1.3
-plot/i=1:10/over/thick/step i^1.4
+plot/i=1:10/over/thick/step/color=light_blue i^1.4
 plot/i=1:10/over/thick/color=blue/step=connected i^1.5
 plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6
 
diff --git a/bench/bn_polygon_log.jnl b/bench/bn_polygon_log.jnl
new file mode 100644
index 0000000..780399d
--- /dev/null
+++ b/bench/bn_polygon_log.jnl
@@ -0,0 +1,33 @@
+! bn_polygon_log.jnl
+! polygon plots on a log axis need tests
+
+let xsqr = YSEQUENCE({0,.1,.1,0})
+let ysqr = YSEQUENCE({0,0,.1,.1})
+let xpts = cos(x/10) + 2
+let ypts = x/10+1
+
+! Polygon plot
+
+set view ul
+polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10
+
+! Poly/vlog and /hlog
+! (known bug: Whats up with the colorbar labels?)
+set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10
+set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10
+set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10
+
+! These are errors - log of negative values on axis
+
+set mode ignore
+
+let ybad = x/10 - 1
+let xbad = cos(x/10) + 0.8
+
+can view
+polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10
+
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+
+set mode/last ignore
diff --git a/bench/bn_show_outfile.jnl b/bench/bn_show_outfile.jnl
new file mode 100644
index 0000000..c94ea5d
--- /dev/null
+++ b/bench/bn_show_outfile.jnl
@@ -0,0 +1,83 @@
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE= 
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+
+! test various combinations of /append and /clobber
+
+!can mode verify
+
+! show axis/outfile
+
+
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+
+SAY ---------------- Just axis month_irreg
+sp cat a.txt
+
+show axis/append/outfile=a.txt PS*
+
+SAY ---------------- appending all axes starting with PS
+sp cat a.txt
+
+! show grid/outfile
+
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+
+SAY ---------------- Just the grid of sst
+sp cat a.txt
+
+! show var/outfile
+
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+
+SAY ---------------- show var output from two user vars 
+sp cat a.txt
+cancel var/all
+
+! show data/outfile
+
+show data/append/outfile=a.txt
+
+SAY ---------------- appending show data
+sp cat a.txt
+
+! combinations of /append and /clobber
+
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+
+SAY ---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+
+show grid/clobber/outfile=a.txt sst
+
+SAY ---------------- Just grid of sst
+sp cat a.txt
+
+use coads_climatology
+use levitus_climatology
+
+show data/clobber/outfile=a.txt 1
+
+SAY ---------------- Just dataset 1
+sp cat a.txt
+
+show data/append/outfile=a.txt levitus_climatology
+
+SAY ---------------- appending datset 2 by name
+sp cat a.txt
+show grid/clobber/outfile=a.txt PS3*
+
+SAY ---------------- only showing all grids starting with PS3
+sp cat a.txt
+
+SAY ---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+
diff --git a/bench/bn_spawn_size.jnl b/bench/bn_spawn_size.jnl
new file mode 100644
index 0000000..441cf34
--- /dev/null
+++ b/bench/bn_spawn_size.jnl
@@ -0,0 +1,27 @@
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not 
+! the nominalabstract axis length.
+
+! ticket 981
+
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+say `files,return=isize`
+
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+list {spawn:"ls xml*.jnl"}
+
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
+
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
diff --git a/bench/bn_vtree_outfile.jnl b/bench/bn_vtree_outfile.jnl
new file mode 100644
index 0000000..e22a787
--- /dev/null
+++ b/bench/bn_vtree_outfile.jnl
@@ -0,0 +1,185 @@
+! bn_tree_outfile.jnl
+
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+
+! 
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+
+! ================
+
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+
+! file variables
+go bn_vtree_outfile.sub fv1
+show var/tree/outfile=a.txt/clobber/d=other_file_vars fv1
+sp cat a.txt
+
+! expressions
+let a = fv1 + fvx
+go bn_vtree_outfile.sub a
+
+let a = fv1[d=1] - fv1[d=2]
+vtree=file a
+vtree=all a
+vtree=all /d=1 a
+vtree=all /d=2 a
+\say "********************************"
+
+! unrecognized variable names
+go bn_vtree_outfile.sub noexist
+
+! unrecognized dataset
+go bn_vtree_outfile.sub v[d=noexist]
+
+! unrecognized dataset and variable
+go bn_vtree_outfile.sub novar[d=nodset]
+
+let b = noexist
+go bn_vtree_outfile.sub b
+
+! grid-changing functions 
+go bn_vtree_outfile.sub RESHAPE(fvx,fvz)
+
+! file variable aux var
+LET Zpts = Z[Z=0:500:100]
+define axis/z/units=meters zax = zpts
+LET fv1z = fv1[gz(fvz)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+! user-defined aux vars
+let depth = z[g=fvz]
+LET fv1z = fv1[gz(depth)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+let depth = z[g=fvz]+ 0*fvz[k=1]
+LET fv1z = fv1[gz(depth)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+! unknown aux var
+LET fv1z = fv1[gz(noexist)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+! unknown variable with known aux var
+LET fv1z = noexist[gz(depth)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+! unknown variable with unknown aux var
+LET fv1z = noexist[gz(unknown_aux)=zpts] + fvx
+go bn_vtree_outfile.sub fv1z
+
+! aggregate (ensemble) dataset of file variables
+define data/agg my_agg = my_file_vars, other_file_vars, another_file_vars
+go bn_vtree_outfile.sub fv1
+
+! aggregation in which some members are uvars
+let/d=other_file_vars   fvx = fv1 + x[gx=fvx[d=1],i=1:3]
+let/d=another_file_vars fvx = 2*fv1 + x[gx=fvx[d=1],i=1:3]
+define data/agg my_uvar_agg = my_file_vars, other_file_vars, another_file_vars
+go bn_vtree_outfile.sub fvx
+
+! recursions
+! ... a circular parent dependency is a recursion; sibling dependency is not
+let p0 = s1 + p1
+let p1 = s2 + p2
+let p2 = s3 + p3
+let p3 = p1 + S3
+go bn_vtree_outfile.sub p0    ! recursion
+let p3 = s1 + S3
+go bn_vtree_outfile.sub p0    ! ok
+
+! suppressing duplicated siblings (twins)
+let fv = fv1 + fv1 + fv1
+let uv = fvx + fvx + fvx
+show var/tree/outfile=a.txt/clobber/d=my_file_vars    fv
+show var/tree/outfile=a.txt/append/d=my_uvar_agg     fv
+show var/tree/outfile=a.txt/append/d=other_file_vars uv
+show var/tree/outfile=a.txt/append/d=my_uvar_agg     uv
+sp cat a.txt
+\say "***************************"
+
+! suppressing duplicates elsewhere in the family tree ("defined above")
+let b = c
+let c = 1
+let v1 = a  + b + b^2
+let v2 = v1 + b + a + a        ! a appears after v1
+let v3 = a + v1 + b + a + a    ! a appears before v1
+go bn_vtree_outfile.sub v2
+go bn_vtree_outfile.sub v3
+
+! collections of trees handled as a group
+! display from large tree size to small, suppressing definitions already displayed
+cancel var/all
+let a = f
+let b = fv1[d=my_file_vars]
+let c = 1
+let d = b + c
+let e = 1
+go bn_vtree_outfile.sub "a, b, c, noexist, d, e, fvx[d=my_file_vars]"
+
+! reporting other errors in definitions
+  set mode ignore
+
+  ! unidentified grid
+  let a = i[i=1:5]
+  let b = a[g=noexist]
+  go bn_vtree_outfile.sub b
+  list b
+
+  ! syntax error - format of longitude
+  let c = a[x=45s]
+  go bn_vtree_outfile.sub c
+  list c
+
+  ! syntax error - extra comma
+  let d = a[i=1,,j=2]
+  go bn_vtree_outfile.sub d
+  list d
+
+  ! syntax error - unknown pseudovariable
+  let e = a[p=1]
+  go bn_vtree_outfile.sub e
+  list e
+
+  ! out of limit region -- not detectable as error, because grids are never determined
+  let f = a[i=10]
+  go bn_vtree_outfile.sub f
+  list f
+
+  set mode/last ignore
+
+! dependency through attribute sharing (not yet implemented)
+let a = fvz.long_name[d=1]
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+let a = ..history[d=1]
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+
+set mode verify
+
diff --git a/bench/bn_vtree_outfile.sub b/bench/bn_vtree_outfile.sub
new file mode 100644
index 0000000..6bdde9a
--- /dev/null
+++ b/bench/bn_vtree_outfile.sub
@@ -0,0 +1,19 @@
+\cancel mode verify
+
+say "/TREE=ALL"
+vtree=all/clobber/outfile=a.txt ($1)
+say "/TREE=USER"
+vtree=user/append/outfile=a.txt ($1)
+say "/TREE=FILE"
+vtree=file/append/outfile=a.txt ($1)
+
+if `($1),return=IsReady` then
+  say ($1) is ready and `($1),return=status`
+else
+  say the problem is `($1),return=status`
+endif
+
+say "************************"
+sp cat a.txt
+
+!set mode/last verify
diff --git a/bench/bn_wgt_transform.jnl b/bench/bn_wgt_transform.jnl
new file mode 100644
index 0000000..ba36581
--- /dev/null
+++ b/bench/bn_wgt_transform.jnl
@@ -0,0 +1,40 @@
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+
+! Define an XYT grid
+
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+
+! Varies in y with latitude correction
+shade/l=1 weights
+
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+
+! Varies in T because of irregular t axis
+shade/x=1 weights
+
+
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+
+! This finds the previous result in memory - needs to 
+! reuse the correct one.
+
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
diff --git a/bench/check_metafiles_rh6 b/bench/check_metafiles_rh6
deleted file mode 100755
index 19397da..0000000
--- a/bench/check_metafiles_rh6
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/csh -f
-# script to check metafiles (.plt*, .gif* and .ps) created after a run of the 
-# benchmark routine against master metafiles. 
-
-set plt_files = ( bn*.plt dots.plt flowlines.plt graticules.plt linecolors.plt multi_line_labels.plt \
-pattern*.plt polygon*.plt vec_curv*.plt)
-set gif_files = ( bn*.gif )
-set ps_files = (bn*.ps)
-set mb_files = (bat.plt_*)
-set num_plt_files = `ls -l *.plt | wc -l `
-
-set err_plt = 0
-set total_plt_files = 23
-foreach plt_file ($plt_files)
-   set size = `ls -l $plt_file | awk '{print $5}'`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$plt_file | awk '{print $5}'`
-   if ($size != $size2) then
-      set err_plt = 1
-      echo "plt files differ $plt_file size $size metafile_masters_64bit_rh6/ size $size2" 
-   endif
-   if ($num_plt_files != $total_plt_files ) set err_plt = 1
-end
-
-set err_gif = 0
-foreach gif_file ($gif_files)
-   set size = `ls -l $gif_file | awk '{print $5}'`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$gif_file | awk '{print $5}'`
-   if ($size != $size2) then
-      set err_gif = 1
-      echo "gif files differ $gif_file size $size metafile_masters_64bit_rh6/ size $size2" 
-   endif
-end
- 
-set err_ps = 0
-foreach ps_file ($ps_files)
-   set size = `ls -l $ps_file | cut -b 21-27`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$ps_file | cut -b 21-27`
-   set size = `ls -l $ps_file | awk '{print $5}'`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$ps_file | awk '{print $5}'`
-   if ($size != $size2) then
-      set err_ps = 1
-      echo "ps files differ $ps_file size $size metafile_masters_64bit_rh6/ size $size2" 
-   endif
-end
-
-set err_mb = 0
-foreach mb_file ($mb_files)
-   set size = `ls -l $mb_file | cut -b 21-27`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$mb_file | cut -b 21-27`
-   set size = `ls -l $mb_file | awk '{print $5}'`
-   set size2 = `ls -l metafile_masters_64bit_rh6/$mb_file | awk '{print $5}'`
-   if ($size != $size2) then
-      set err_mb = 1
-      echo "metafile batch files differ $mb_file size $size metafile_masters_64bit_rh6/ size $size2" 
-   endif
-end
-
-set any_error = 0
-if ($err_plt) then
-	echo "CHECK PLT FILES - THERE HAS BEEN AN ERROR"
-	if ($num_plt_files != $total_plt_files ) then 
-	  echo "num_plt_files $num_plt_files There should be $total_plt_files"
-	endif
-        set any_error = 1
-else
-	echo "    PLT files look good....."
-endif 
-if ($err_gif) then
-	echo "CHECK GIF FILES - THERE HAS BEEN AN ERROR"
-        set any_error = 1
-else
-	echo "    GIF files look good....."
-endif
-if ($err_ps) then
-	echo "CHECK PS FILES - THERE HAS BEEN AN ERROR"
-        set any_error = 1
-else
-	echo "    PS files look good......"
-endif
-if ($err_mb) then
-	echo "CHECK metafile batch FILES - THERE HAS BEEN AN ERROR"
-        set any_error = 1
-else
-	echo "    metafile batch files look good......"
-endif
-
-if ($any_error) then
-	echo "  "
-	echo " If ImageMagick is available, run check_metafiles_ImageMagick_rh6 to see plot differences. "
-	echo " As the script runs, it shows the standard plot, the plot from this benchmark run, and a diff plot. "
-	echo " Delete the standard and benchmark plots first, then the diff plot. "
-	echo "  "
-endif
diff --git a/bench/conventions_history_in.nc b/bench/conventions_history_in.nc
new file mode 100644
index 0000000..7cb1369
Binary files /dev/null and b/bench/conventions_history_in.nc differ
diff --git a/bench/err686_set_var_name.jnl b/bench/err686_set_var_name.jnl
index 6adf569..5062b31 100644
--- a/bench/err686_set_var_name.jnl
+++ b/bench/err686_set_var_name.jnl
@@ -14,6 +14,15 @@ set var/name=c a
 sh var
 
 use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+
+let a = 1
+let b = 2
+set var/name=b a
+
+! Intentional error, new name already in file
+
+
 ! Intentional error, new name already in file
 set var/name=temp salt
 show dat
@@ -29,6 +38,7 @@ set var/name=psi myvar
 set var/name=diff myvar
 show dat
 
-
+! another error, new name is a user-var
+yes? set var/name=diff w
 
 SET MODE/LAST ignore
diff --git a/bench/err691_bnds_case.jnl b/bench/err691_bnds_case.jnl
new file mode 100644
index 0000000..fc8030d
--- /dev/null
+++ b/bench/err691_bnds_case.jnl
@@ -0,0 +1,10 @@
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+
+set mode/last upcase_output
diff --git a/bench/err69_arg_type_error.jnl b/bench/err69_arg_type_error.jnl
new file mode 100644
index 0000000..d6f2737
--- /dev/null
+++ b/bench/err69_arg_type_error.jnl
@@ -0,0 +1,17 @@
+! err69_arg_type_error
+! See ticket 2169
+! 
+set mode ignore
+sh func  tax_datestring
+sh func /detail tax_datestring
+
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+
+set mode /last ignore
+
diff --git a/bench/err69_bad_bounds.jnl b/bench/err69_bad_bounds.jnl
new file mode 100644
index 0000000..1af8e8b
--- /dev/null
+++ b/bench/err69_bad_bounds.jnl
@@ -0,0 +1,25 @@
+! err69_bad_bounds.jnl
+! See ticket 2170
+
+set mode ignore
+
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+
+sh axis TAX_BB*
+
+set mode/last ignore
diff --git a/bench/err69_const_array.jnl b/bench/err69_const_array.jnl
new file mode 100644
index 0000000..2d9666f
--- /dev/null
+++ b/bench/err69_const_array.jnl
@@ -0,0 +1,26 @@
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174 
+! expressions are not allowed in constant-array definitions.
+
+set mode ignore
+
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
+
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
+
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
+
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+
+set mode/last ignore
diff --git a/bench/err69_countervar_context.jnl b/bench/err69_countervar_context.jnl
new file mode 100644
index 0000000..d5c306c
--- /dev/null
+++ b/bench/err69_countervar_context.jnl
@@ -0,0 +1,11 @@
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+
+can region
diff --git a/bench/err69_ens_badvalue.jnl b/bench/err69_ens_badvalue.jnl
new file mode 100644
index 0000000..272b8bf
--- /dev/null
+++ b/bench/err69_ens_badvalue.jnl
@@ -0,0 +1,14 @@
+! err69_ens_badvalue.jnl 
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled 
+! when defining an ensemble.
+
+use maize_1.nc, maize_2.nc, maize_3.nc
+
+! Note the _FillValue,  flag 
+sho att maize_yield
+ensemble ens = 1,2,3
+
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
diff --git a/bench/err69_fill_trans.jnl b/bench/err69_fill_trans.jnl
new file mode 100644
index 0000000..d535078
--- /dev/null
+++ b/bench/err69_fill_trans.jnl
@@ -0,0 +1,18 @@
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+
+list myvar
+list myvar[x=6 at fnr:2]
+
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+
diff --git a/bench/err69_if_then_split.jnl b/bench/err69_if_then_split.jnl
new file mode 100644
index 0000000..bb61b9c
--- /dev/null
+++ b/bench/err69_if_then_split.jnl
@@ -0,0 +1,42 @@
+! err69_if_then_split.jnl
+! bug1860
+!  In an IF  clause not being executed,
+!  an IF expression THEN command which 
+!  is split over two lines caused an error
+
+say "This works:"
+if 1 then
+  if `1 or \
+      1` then
+    say "hi"
+  endif
+endif
+
+say "This works:"
+if 1 then
+  if `1 or \
+      1` then
+    say "hi"
+  endif
+endif
+
+say "This works:"
+if 0 then
+  let condition = 1 or \
+                  1
+  if `condition` then
+    say "hi"
+  endif
+endif
+
+say "This failed:"
+if 0 then
+  if `1 or \
+      1` then
+    say "hi"
+  endif
+endif
+
+
+say end of  err69_if_then_split
+
diff --git a/bench/err69_isready_and_regridding.jnl b/bench/err69_isready_and_regridding.jnl
new file mode 100644
index 0000000..63a57b5
--- /dev/null
+++ b/bench/err69_isready_and_regridding.jnl
@@ -0,0 +1,36 @@
+! err69_isready_and_regridding.jnl
+! Ticket 2204: A `var,return=isready` sends Ferret into a hanged 
+! state after other contexts have been defined
+
+can dat/all
+
+! create & load a file with a Gregorian time axis
+def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135}
+let a = t[gt=tax_g]
+save/clob/file=a.nc a
+can var a
+can ax tax_g
+use a.nc
+
+! create a variable on a Julian time axis
+def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j
+let b = t[gt=tax_j]
+
+! put the Gregorian data on the Julian axis
+let a2 = a
+let a2_on_b = a2[gt=b]
+
+! create a climatological axis (Julian)
+def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75}
+
+let b_one = missing(1+0*b,1)      !set everything to 1
+let nyr = b_one[gl=tax_jc at modsum] !# years that include each month
+
+! Execute some commands which put things into context storage
+
+say `a2_on_b,r=title`
+say `nyr[l=1]`
+
+! This got us into a weird hanged state
+IF `a2_on_b,r=isready` THEN
+ENDIF
diff --git a/bench/err69_isready_bugs.jnl b/bench/err69_isready_bugs.jnl
new file mode 100644
index 0000000..d20800a
--- /dev/null
+++ b/bench/err69_isready_bugs.jnl
@@ -0,0 +1,28 @@
+! err69_isready_bugs.jnl
+! Tickets 2201 and 2215   
+
+! ticket 2201: isready operation meant we couldn't cancel the second axis
+
+def ax/x=0:360:1 xax_isready_1
+def ax/x=0:360:10 xax_isready_2
+let a = x[gx=xax_isready_1]
+say `a,r=title`
+let b = a[gx=xax_isready_2]
+load b
+say `b,r=isready`
+
+
+can var a
+can axis xax_isready_1
+can var b
+can axis xax_isready_2
+
+! Ticket 2215, only with an unreleased Ferret; the first fix to 2201.
+
+let a = x[gx=1:3:1]
+let b = a - a[gx=a]
+let c = 1
+let/unit="m" f = b*c
+say `f,r=isready`
+
+say `f,r=unit`
diff --git a/bench/err69_isready_status_errmsgs.jnl b/bench/err69_isready_status_errmsgs.jnl
new file mode 100644
index 0000000..fd4081c
--- /dev/null
+++ b/bench/err69_isready_status_errmsgs.jnl
@@ -0,0 +1,15 @@
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+
+set mode ignore
+list a
+say `a,return=isready`
+say `c,return=status`
+list a
+list b
+shade a
+
+set mode/last ignore
+
diff --git a/bench/err69_label_backspace.jnl b/bench/err69_label_backspace.jnl
new file mode 100644
index 0000000..a32cdbc
--- /dev/null
+++ b/bench/err69_label_backspace.jnl
@@ -0,0 +1,7 @@
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+
diff --git a/bench/err69_letd_dsetnum.jnl b/bench/err69_letd_dsetnum.jnl
new file mode 100644
index 0000000..b9b9f44
--- /dev/null
+++ b/bench/err69_letd_dsetnum.jnl
@@ -0,0 +1,7 @@
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
+
+use coads_climatology
+let/d=`sst,r=dsetnum` a = 1
+sh dat
diff --git a/bench/err69_levels_v.jnl b/bench/err69_levels_v.jnl
new file mode 100644
index 0000000..88c16f2
--- /dev/null
+++ b/bench/err69_levels_v.jnl
@@ -0,0 +1,14 @@
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes 
+! made to throw out data outside 3 std when 
+! computing the mean and std dev for color levels.
+
+use "lev_v_bug.nc"
+shade/lev=v var2d
+
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+
diff --git a/bench/err69_load_big_grid.jnl b/bench/err69_load_big_grid.jnl
new file mode 100644
index 0000000..302c5ab
--- /dev/null
+++ b/bench/err69_load_big_grid.jnl
@@ -0,0 +1,24 @@
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+
+set mode ignore
+
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+load bigvar
+
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+load bigvar
+
+cancel mode ignore
diff --git a/bench/err69_long_string_to_xml.jnl b/bench/err69_long_string_to_xml.jnl
new file mode 100644
index 0000000..86c13e9
--- /dev/null
+++ b/bench/err69_long_string_to_xml.jnl
@@ -0,0 +1,12 @@
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+! 
+
+list/clobber/file="out.xml"/nohead/norow 1 
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+
+sp cat out.xml
diff --git a/bench/err69_multi_label_ascii.jnl b/bench/err69_multi_label_ascii.jnl
new file mode 100644
index 0000000..712d5ec
--- /dev/null
+++ b/bench/err69_multi_label_ascii.jnl
@@ -0,0 +1,29 @@
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM 
+! ticket 2176
+! Multi-line labels and ascii fonts.
+
+plot/vs/nolab {0,1},{0,1}
+
+
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+
+
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+
+! escape just the special characters. 
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+
diff --git a/bench/err69_plot_vs_labs.jnl b/bench/err69_plot_vs_labs.jnl
new file mode 100644
index 0000000..9f176b1
--- /dev/null
+++ b/bench/err69_plot_vs_labs.jnl
@@ -0,0 +1,21 @@
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
+
+use coads_climatology
+
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+set v right; plot/vs c,b; sh sym labx,laby
+
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+set v right; plot/trans/vs c,b; sh sym labx,laby
+
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
diff --git a/bench/err69_repeat_in_if.jnl b/bench/err69_repeat_in_if.jnl
new file mode 100644
index 0000000..ddb0ba1
--- /dev/null
+++ b/bench/err69_repeat_in_if.jnl
@@ -0,0 +1,55 @@
+! err69_repeat_in_if.jnl
+! Ticket 2211:  IF-THEN-ELSE inside a REPEAT inside a non-executed IF block
+!   (see also err62_if_inside_repeat, which had less-involved cases.)
+
+cancel mode verify
+
+IF 0 THEN
+   repeat/name=s/range=1:1 (\
+      if 1 then;\
+        say loop 1 inside repeat;\
+      else;\
+        DEFINE SYMBOL mystring= ();\
+      endif;\
+      )
+ELSE
+  say loop 1 this should be echoed
+ENDIF
+
+IF 0 THEN
+  say loop 2 this should not be echoed
+ELSE
+   repeat/name=s/range=1:1 (\
+      if 1 then;\
+        say loop 2 inside repeat;\
+      else;\
+        DEFINE SYMBOL mystring= ();\
+      endif;\
+      )
+ENDIF
+
+IF 1 THEN
+   repeat/name=s/range=1:1 (\
+      if 1 then;\
+        say loop 3 inside repeat;\
+      else;\
+        DEFINE SYMBOL mystring= ();\
+      endif;\
+      )
+ELSE
+   say loop 3 this string should not be shown
+ENDIF
+
+IF 1 THEN
+   say loop 4 this string should be echoed
+ELSE
+   repeat/name=s/range=1:1 (\
+      if 1 then;\
+        say loop 4 inside repeat;\
+      else;\
+        DEFINE SYMBOL mystring= ();\
+      endif;\
+      )
+ENDIF
+
+set mode/last verify
diff --git a/bench/err69_repl_scinot.jnl b/bench/err69_repl_scinot.jnl
new file mode 100644
index 0000000..d8987c4
--- /dev/null
+++ b/bench/err69_repl_scinot.jnl
@@ -0,0 +1,15 @@
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+
+let a = 1.e-10
+say (`a`)
+
+let a = -1.e-10
+say (`a`)
+
+let a = -1.23e-10
+say (`a`)
+
+let a = -1.23e-2
+say (`a`)
diff --git a/bench/err69_ribbon_by_levels.jnl b/bench/err69_ribbon_by_levels.jnl
new file mode 100644
index 0000000..c1f783f
--- /dev/null
+++ b/bench/err69_ribbon_by_levels.jnl
@@ -0,0 +1,21 @@
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+
+
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+
diff --git a/bench/err69_ribbon_histogram.jnl b/bench/err69_ribbon_histogram.jnl
new file mode 100644
index 0000000..2fcb580
--- /dev/null
+++ b/bench/err69_ribbon_histogram.jnl
@@ -0,0 +1,23 @@
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+
+
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
diff --git a/bench/err69_vtree_and_uvar_regrid.jnl b/bench/err69_vtree_and_uvar_regrid.jnl
new file mode 100644
index 0000000..8cd58a6
--- /dev/null
+++ b/bench/err69_vtree_and_uvar_regrid.jnl
@@ -0,0 +1,8 @@
+! err69_vtree_and_uvar_regrid.jnl
+! Ticket 2206: This lead to a crash.
+! 10/9/2014
+
+let a = t[gt=1:2:1]
+let b2 = a
+let c = b2[gt=a]
+GO bn_vtree.sub c
diff --git a/bench/err69_vtree_cancel_axis.jnl b/bench/err69_vtree_cancel_axis.jnl
new file mode 100644
index 0000000..a279c75
--- /dev/null
+++ b/bench/err69_vtree_cancel_axis.jnl
@@ -0,0 +1,19 @@
+! err69_vtree_cancel_axis
+! Ticket 2201: After a return=isready, 
+! cannot cancel the axis used by the var
+! 10-Oct-2014
+
+define axis/x=0:360:1 xax1
+define axis/x=0:360:10 xax2
+
+let a = x[gx=xax1]
+say `a,return=title`
+
+let b = a[gx=xax2]
+say `b,return=isready`
+
+cancel var a b
+cancel axis xax1
+cancel axis xax2
+
+
diff --git a/bench/err69_write_attribute.jnl b/bench/err69_write_attribute.jnl
new file mode 100644
index 0000000..85b1906
--- /dev/null
+++ b/bench/err69_write_attribute.jnl
@@ -0,0 +1,62 @@
+! err69_write_attribute.jnl
+! Bug 1863
+
+use gt4d011.cdf
+sh grid temp
+let a = temp[x=@ave,y=@ave,L=1]
+
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+
+can data/all
+can var/all
+
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+
+use aa
+use bb
+set data 1
+
+show att (`temp,r=zaxis`)
+
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+
+let a = temp[d=2,gz=temp[d=1]]
+
+can att/output (`a,r=zaxis`).point_spacing
+
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+
+sp rm aa.nc bb.nc
diff --git a/bench/global.nc b/bench/global.nc
new file mode 100644
index 0000000..5239f38
Binary files /dev/null and b/bench/global.nc differ
diff --git a/bench/lev_v_bug.nc b/bench/lev_v_bug.nc
new file mode 100644
index 0000000..7e90bc7
Binary files /dev/null and b/bench/lev_v_bug.nc differ
diff --git a/bench/maize_1.nc b/bench/maize_1.nc
new file mode 100644
index 0000000..cc739a1
Binary files /dev/null and b/bench/maize_1.nc differ
diff --git a/bench/maize_2.nc b/bench/maize_2.nc
new file mode 100644
index 0000000..7f29afa
Binary files /dev/null and b/bench/maize_2.nc differ
diff --git a/bench/maize_3.nc b/bench/maize_3.nc
new file mode 100644
index 0000000..66f1013
Binary files /dev/null and b/bench/maize_3.nc differ
diff --git a/bench/test_results/axticlabel.pdf b/bench/test_results/axticlabel.pdf
index c8fa9d8..2c84f66 100644
Binary files a/bench/test_results/axticlabel.pdf and b/bench/test_results/axticlabel.pdf differ
diff --git a/bench/test_results/bnplot.pdf b/bench/test_results/bnplot.pdf
index fe421b4..f9eb8d7 100644
Binary files a/bench/test_results/bnplot.pdf and b/bench/test_results/bnplot.pdf differ
diff --git a/bench/test_results/closed_lev.pdf b/bench/test_results/closed_lev.pdf
index b4db592..b97931c 100644
Binary files a/bench/test_results/closed_lev.pdf and b/bench/test_results/closed_lev.pdf differ
diff --git a/bench/test_results/dashbug.pdf b/bench/test_results/dashbug.pdf
index 39964d8..04a7002 100644
Binary files a/bench/test_results/dashbug.pdf and b/bench/test_results/dashbug.pdf differ
diff --git a/bench/test_results/degC_axlab.pdf b/bench/test_results/degC_axlab.pdf
index 876fbae..ab2d440 100644
Binary files a/bench/test_results/degC_axlab.pdf and b/bench/test_results/degC_axlab.pdf differ
diff --git a/bench/test_results/dots.pdf b/bench/test_results/dots.pdf
index 5c49080..8214a4b 100644
Binary files a/bench/test_results/dots.pdf and b/bench/test_results/dots.pdf differ
diff --git a/bench/test_results/ferret_run_tests_err b/bench/test_results/ferret_run_tests_err
index af78c6a..417940e 100644
--- a/bench/test_results/ferret_run_tests_err
+++ b/bench/test_results/ferret_run_tests_err
@@ -1,8 +1,8 @@
-Using FERRET /home/users/ksmith/Ferret/bin/ferret
-lrwxrwxrwx 1 ksmith tmap 11 Mar 31 15:35 /home/users/ksmith/Ferret/bin/ferret -> ferret_v6.9
-Using external functions from /home/users/ksmith/Ferret/ext_func/libs
+Using FERRET /home/flat/ksmith/Ferret/bin/ferret
+lrwxrwxrwx. 1 ksmith oerdnewp 12 Oct 30 11:11 /home/flat/ksmith/Ferret/bin/ferret -> ferret_v6.93
+Using external functions from /home/flat/ksmith/Ferret/ext_func/libs
 Benchmark run by ksmith
-Note: RUN_TESTS.sh test results for debug build of Ferret on RHEL5-64
+Note: RUN_TESTS.sh test results for debug build of Ferret on RHEL6-64
 Benchmark scripts that will be run:
    bn_syntax.jnl
    bn_dollar.jnl
@@ -216,27 +216,36 @@ Benchmark scripts that will be run:
    bn_enter_exit_GO.jnl
    bn_stddev.jnl
    bn_set_axis_name.jnl
+   bn691_bug_fixes.jnl
+   bn_append_dsg.jnl
+   bn_global_atts.jnl
+   bn_conventions_history.jnl
+   bn_center_key_labels.jnl
+   bn_wgt_transform.jnl
+   bn_show_outfile.jnl
+   bn_date1900_array.jnl
+   bn_spawn_size.jnl
+   bn_polygon_log.jnl
    bn_all_ef.jnl
    bn_startupfile.jnl
 ****** Restricting Ferret paths to bench directory ******
 FER_DAT=.
 FER_DATA=.
-FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/users/ksmith/Datasets
+FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/flat/ksmith/Datasets
 FER_DESCR=.
 FER_DIR=.
 FER_DSETS=.
-FER_EXTERNAL_FUNCTIONS=/home/users/ksmith/Ferret/ext_func/libs
-FER_FONTS=/home/users/ksmith/Ferret/ppl/fonts
-FER_GO=. /home/users/ksmith/Ferret/go /home/users/ksmith/Ferret/examples /home/users/ksmith/Ferret/contrib
+FER_EXTERNAL_FUNCTIONS=/home/flat/ksmith/Ferret/ext_func/libs
+FER_FONTS=/home/flat/ksmith/Ferret/ppl/fonts
+FER_GO=. /home/flat/ksmith/Ferret/go /home/flat/ksmith/Ferret/examples /home/flat/ksmith/Ferret/contrib
 FER_GRIDS=.
-FER_LIBS=/home/users/ksmith/Ferret/lib
-FER_PALETTE=. /home/users/ksmith/Ferret/ppl
+FER_LIBS=/home/flat/ksmith/Ferret/lib
+FER_PALETTE=. /home/flat/ksmith/Ferret/ppl
 FER_WEB_BROWSER=firefox
-Beginning at Mon Mar 31 15:37:06 PDT 2014
+Beginning at Thu Oct 30 11:13:49 PDT 2014
 *** Running test: bn_syntax.jnl
  Cached data cleared from memory
         SET EXPRESSION has not been given or implied
-        SET EXPRESSION has not been given or implied
  **ERROR: unknown command qualifier: help
 MESSAGE/CONTINUE /help
  **ERROR: unknown command: that
@@ -790,9 +799,10 @@ list v2-and-minus[i=5:15 at ddc]
  Cached data cleared from memory
  LISTing to file permutedBinaryTest.dat
  LISTing to file junk.dat
- **ERROR: request exceeds memory setting: A negative number of words were requested.
+ **ERROR: request exceeds memory setting: 24000 Mwords were requested.
 load num
- *** NOTE: The current grid is most likely too large
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
@@ -1354,7 +1364,7 @@ POLYGON/KEY/LEV=0.01d/coord_ax=Z  PLMxpoly+PLMxpolymark, PLMypoly+PLMypolymark,
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
 rm: cannot remove `input.txt': No such file or directory
-ls: input.txt: No such file or directory
+ls: cannot access input.txt: No such file or directory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3155,7 +3165,7 @@ define data/agg windy = 1,2
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  *** NOTE: Adjusting Y-axis label size from 0.100 to 0.001, to avoid running off page.
- *** NOTE: /home/users/ksmith/Ferret/go/magnify.jnl
+ *** NOTE: /home/flat/ksmith/Ferret/go/magnify.jnl
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3307,9 +3317,9 @@ Replacing definition of axis AXI_COARSE
 *** Running test: bn_dsg_e_x.jnl
  Cached data cleared from memory
 *** Running test: bn_nco_append.jnl
-sh: ncks: command not found
  Cached data cleared from memory
  LISTing to file append_to_this.nc
+sh: ncks: command not found
 *** Running test: bn_nobounds.jnl
  Cached data cleared from memory
  LISTing to file a.nc
@@ -3339,6 +3349,14 @@ plot/i=1:100/ribbon/COLOR sin(i/6),0.6*sin(i/7)
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
  **ERROR: illegal limits: X axis limits don't match variable def'n: A
           Are you giving explicit limits when SET REGION would suffice ?
 list f
@@ -3425,10 +3443,14 @@ show att temp.noexist[d=levitus_climatology]
  TEMPORARY data cleared from memory
  **ERROR: invalid command: illegal new name.  Variable b already defined
 set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
  **ERROR: invalid command: illegal new name.  Variable temp exists in dataset
 set var/name=temp salt
  **ERROR: invalid command: illegal new name.  Variable psi exists in dataset
 set var/name=psi myvar
+ **ERROR: invalid command: illegal new name.  Variable diff already defined
+set var/name=diff w
 *** Running test: bn_bad_axis_bounds.jnl
  Cached data cleared from memory
  *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another
@@ -3452,6 +3474,149 @@ set axis/name x_in_meters
 set axis/name=45 x_in_meters
  **ERROR: invalid command: illegal new name given for axis .fr
 set axis/name=.fr x_in_meters
+*** Running test: bn691_bug_fixes.jnl
+ Cached data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING
+list tax_datestring (tt[L=3], tt, 5)
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR
+ *** NOTE: Substituting coordinate midpoints
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: command syntax: must be a constant COS(1)
+list {cos(1), sin(0)}
+ **ERROR: command syntax: must be a constant 0-180
+list {0-180, 180}
+ **ERROR: command syntax: must be a constant  1./5.
+list {0.1, 0.2, 1./5.}
+ **ERROR: command syntax: must be a constant 5*3+1
+list {5*3+1, 2+3}
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file tval.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file out.xml
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis XAXIS
+ **ERROR: request exceeds memory setting: 2369 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+Replacing definition of axis LONGTIME
+ **ERROR: request exceeds memory setting: 4735 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ LISTing to file aa.nc
+ LISTing to file bb.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+*** Running test: bn_append_dsg.jnl
+ Cached data cleared from memory
+rm: cannot remove `test_save_dsg.nc': No such file or directory
+*** Running test: bn_global_atts.jnl
+ Cached data cleared from memory
+ LISTing to file anew_global.nc
+*** Running test: bn_conventions_history.jnl
+ Cached data cleared from memory
+ LISTing to file conventions_history.nc
+*** Running test: bn_center_key_labels.jnl
+ Cached data cleared from memory
+*** Running test: bn_wgt_transform.jnl
+ Cached data cleared from memory
+*** Running test: bn_show_outfile.jnl
+ Cached data cleared from memory
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
+ **ERROR: illegal limits: X axis limits don't match variable def'n: A
+          Are you giving explicit limits when SET REGION would suffice ?
+list f
+*** Running test: bn_date1900_array.jnl
+ Cached data cleared from memory
+*** Running test: bn_spawn_size.jnl
+ Cached data cleared from memory
+*** Running test: bn_polygon_log.jnl
+ Cached data cleared from memory
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.850
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.689E-02
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
 *** Running test: bn_all_ef.jnl
  Cached data cleared from memory
  PERMANENT data cleared from memory
@@ -3471,4 +3636,4 @@ LOAD/TEMPORARY vflag
  TEMPORARY data cleared from memory
 *** Running test: bn_startupfile.jnl
  Cached data cleared from memory
-Ended at Mon Mar 31 15:38:52 PDT 2014
+Ended at Thu Oct 30 11:20:08 PDT 2014
diff --git a/bench/test_results/ferret_run_tests_log b/bench/test_results/ferret_run_tests_log
index 29c00ba..ba1dd4b 100644
--- a/bench/test_results/ferret_run_tests_log
+++ b/bench/test_results/ferret_run_tests_log
@@ -1,8 +1,8 @@
-Using FERRET /home/users/ksmith/Ferret/bin/ferret
-lrwxrwxrwx 1 ksmith tmap 11 Mar 31 15:35 /home/users/ksmith/Ferret/bin/ferret -> ferret_v6.9
-Using external functions from /home/users/ksmith/Ferret/ext_func/libs
+Using FERRET /home/flat/ksmith/Ferret/bin/ferret
+lrwxrwxrwx. 1 ksmith oerdnewp 12 Oct 30 11:11 /home/flat/ksmith/Ferret/bin/ferret -> ferret_v6.93
+Using external functions from /home/flat/ksmith/Ferret/ext_func/libs
 Benchmark run by ksmith
-Note: RUN_TESTS.sh test results for debug build of Ferret on RHEL5-64
+Note: RUN_TESTS.sh test results for debug build of Ferret on RHEL6-64
 Benchmark scripts that will be run:
    bn_syntax.jnl
    bn_dollar.jnl
@@ -216,23 +216,33 @@ Benchmark scripts that will be run:
    bn_enter_exit_GO.jnl
    bn_stddev.jnl
    bn_set_axis_name.jnl
+   bn691_bug_fixes.jnl
+   bn_append_dsg.jnl
+   bn_global_atts.jnl
+   bn_conventions_history.jnl
+   bn_center_key_labels.jnl
+   bn_wgt_transform.jnl
+   bn_show_outfile.jnl
+   bn_date1900_array.jnl
+   bn_spawn_size.jnl
+   bn_polygon_log.jnl
    bn_all_ef.jnl
    bn_startupfile.jnl
 ****** Restricting Ferret paths to bench directory ******
 FER_DAT=.
 FER_DATA=.
-FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/users/ksmith/Datasets
+FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/flat/ksmith/Datasets
 FER_DESCR=.
 FER_DIR=.
 FER_DSETS=.
-FER_EXTERNAL_FUNCTIONS=/home/users/ksmith/Ferret/ext_func/libs
-FER_FONTS=/home/users/ksmith/Ferret/ppl/fonts
-FER_GO=. /home/users/ksmith/Ferret/go /home/users/ksmith/Ferret/examples /home/users/ksmith/Ferret/contrib
+FER_EXTERNAL_FUNCTIONS=/home/flat/ksmith/Ferret/ext_func/libs
+FER_FONTS=/home/flat/ksmith/Ferret/ppl/fonts
+FER_GO=. /home/flat/ksmith/Ferret/go /home/flat/ksmith/Ferret/examples /home/flat/ksmith/Ferret/contrib
 FER_GRIDS=.
-FER_LIBS=/home/users/ksmith/Ferret/lib
-FER_PALETTE=. /home/users/ksmith/Ferret/ppl
+FER_LIBS=/home/flat/ksmith/Ferret/lib
+FER_PALETTE=. /home/flat/ksmith/Ferret/ppl
 FER_WEB_BROWSER=firefox
-Beginning at Mon Mar 31 15:37:06 PDT 2014
+Beginning at Thu Oct 30 11:13:49 PDT 2014
 *** Running test: bn_syntax.jnl
 ! bn401_syntax.JNL
 ! - test syntax interpretation of Program FERRET
@@ -374,9 +384,9 @@ SHOW DATA/FULL
     1> ./snoopy.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:2       ...       ...       ...       ...       ...
+               on grid (G008) with -1.E+34 for missing data
+             X=-0.5:1.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -386,7 +396,7 @@ SHOW DATA
      currently SET data sets:
     1> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:2       ...       ...       ...       ...       ...
  
 SET MODE IGNORE_ERROR
 SET DATA/EZ/VAR="P,Q" 1
@@ -642,7 +652,7 @@ show mode journal
       JOURNAL          SET         newjournal.jnl
 set mode journal ferret.jnl
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -654,7 +664,7 @@ ppl list plot
 ppl listsym
 cancel mode ppllist
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -711,6 +721,8 @@ set mode metafile metafile.plt
  
 ! SET - SHOW - CANCEL EXPRESSION
 SHOW EXPRESSION
+        current output expression(s):
+        X[GX=1:0:1]
 CANCEL EXPRESSION
 SHOW EXPRESSION
 SET EXPRESSION i+5,i-j
@@ -909,19 +921,19 @@ SHOW VARIABLES
  
 ! SHOW MEMORY , LOAD
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/TEMPORARY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded without /PERMANENT:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
   105  /125W          50  /1.7N           1  /10             5  /13-SEP-1982  ...  / ...         ...  / ...
  
 SHOW MEMORY/PERMANENT
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded with /PERMANENT:
 SHOW MEMORY/ALL
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 all data in memory:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
@@ -931,9 +943,9 @@ all data in memory:
 LET A=i
 LOAD/PERM/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -947,9 +959,9 @@ SHOW MEMORY/FREE
             number of blocks used /PERM: 1
 LOAD/TEMPORARY/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -1511,8 +1523,8 @@ let x1 = 0.012954
 let x2 = 7.5E-09
 let x3 = .1
 say >>`x1`<< ---  >>`x2`<< --- >>`x3`<<
- !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
->>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
+ !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
+>>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
  
 ! must recognize "/" inside immediate mode exprn
 list/I=`6/2` i
@@ -1849,8 +1861,8 @@ show data
  
     2> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- T4       test4                            1:20480   ...       ...       ...       ...       ...
- T3       test3                            1:20480   ...       ...       ...       ...       ...
+ T4       test4                            1:2       ...       ...       ...       ...       ...
+ T3       test3                            1:2       ...       ...       ...       ...       ...
  
 show data/full 1
      currently SET data sets:
@@ -9689,9 +9701,9 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9719,12 +9731,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
+ X2       X2                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9755,12 +9767,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9799,12 +9811,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9837,12 +9849,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9872,12 +9884,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0))
  /SKIP = 2
@@ -9910,12 +9922,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0)/)
  /SKIP = 1
@@ -10147,7 +10159,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= metafile.plt                                                                                                                                                                                                                                                                                                                                                                                                                                                                             [...]
@@ -10247,7 +10259,7 @@ plot/i=1:10/ylimits=1:40/nolabel i      ! note that /nolabel supresses XLAB
 plot/i=1:10/over/sym=2 i^1.1
 plot/i=1:10/over/sym=2/size=.12 i^1.2
 plot/i=1:10/over/sym=2/color=red i^1.3
-plot/i=1:10/over/thick/step i^1.4
+plot/i=1:10/over/thick/step/color=light_blue i^1.4
 plot/i=1:10/over/thick/color=blue/step=connected i^1.5
 plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6
  
@@ -10491,18 +10503,18 @@ show symbols/all
 PPL$XPIXEL = "0"
 PPL$YPIXEL = "0"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
+NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
-DELTA_CPU = "0.011997"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
+DELTA_CPU = "0.035993"
 CLOCK_SECS = "0.007"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:37:13"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:14:18"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -10520,18 +10532,18 @@ show symbol/all
 PPL$XPIXEL = "0"
 PPL$YPIXEL = "0"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
+NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
-DELTA_CPU = "0.002"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
+DELTA_CPU = "0.001"
 CLOCK_SECS = "0.008"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:37:13"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:14:18"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 S1 = "hello"
@@ -10541,9 +10553,9 @@ NUM = "3"
 T$DOLLAR = "hi"
 T_HELLO = "hi"
 show symbol s*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
 S1 = "hello"
 S2 = ""hello""
 S3 = "hello and goodbye"
@@ -10553,15 +10565,15 @@ S2 = ""hello""
 ! exercise CANCEL SYMBOL
 cancel symbol s2
 show symbol s*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
 S1 = "hello"
 S3 = "hello and goodbye"
 show symbol S*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
 S1 = "hello"
 S3 = "hello and goodbye"
 cancel symbol s2	! already deleted
@@ -10686,21 +10698,21 @@ say ($delayed_eval)         ! translate symbol and then evaluate
 ! cleanup
 cancel symbols/all
 show symbols/all
-PPL$XPIXEL = "691"
-PPL$YPIXEL = "518"
+PPL$XPIXEL = "656"
+PPL$YPIXEL = "492"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
+NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:37"
-SESSION_PID = "26205"
-DELTA_CPU = "0.032995"
-CLOCK_SECS = "0.137"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:37:13"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:14"
+SESSION_PID = "10236"
+DELTA_CPU = "0.029996"
+CLOCK_SECS = "0.709"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:14:18"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
  
@@ -25236,7 +25248,7 @@ GO err491_spawn_quotes.jnl
  
 ! this should be a valid command
 SPAWN "date"
-Mon Mar 31 15:37:20 PDT 2014
+Thu Oct 30 11:14:33 PDT 2014
  
 GO bn_reset
 cancel mode verify
@@ -25358,7 +25370,7 @@ list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50})
  1N   / 46:  29.14  28.92  28.33
  1S   / 45:  28.90  28.82  28.54
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -26149,7 +26161,7 @@ list a 			!   <-- CACHE HIT FAILS!!!
 set mode/last diagnostic
  
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -33418,6 +33430,10 @@ SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
     XPTS: X values of sample points
     YPTS: Y values of sample points
     TPTS: T values of sample points
+SAMPLE_FAST_I(V,Indices)
+    Fast 1D sample variable using set of indices
+    V: Variable to sample
+    Indices: List of indices at which to sample
  
 go bench_sorti.jnl
  
@@ -36075,56 +36091,56 @@ show data/var
     1> ./bn_delimited_read_1.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V2       V2                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V3       V3                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V4       V4                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V5       V5                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V6       V6                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V7       V7                               1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V8       V8                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V9       V9                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V10      V10                              1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
  
  /DELIMITERS="\t,\,"
 list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
@@ -36223,11 +36239,11 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_1.dat  (default)
  name     title                             I         J         K         L         M         N
- A1       A1                               1:20480   ...       ...       ...       ...       ...
- A2       A2                               1:20480   ...       ...       ...       ...       ...
- A3       A3                               1:20480   ...       ...       ...       ...       ...
- A4       A4                               1:20480   ...       ...       ...       ...       ...
- A5       A5                               1:20480   ...       ...       ...       ...       ...
+ A1       A1                               1:7       ...       ...       ...       ...       ...
+ A2       A2                               1:7       ...       ...       ...       ...       ...
+ A3       A3                               1:7       ...       ...       ...       ...       ...
+ A4       A4                               1:7       ...       ...       ...       ...       ...
+ A5       A5                               1:7       ...       ...       ...       ...       ...
  
 list a1,a2,a3,a4,a5
              DATA SET: ./bn_delimited_read_1.dat
@@ -36335,18 +36351,18 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
  
 file/form=delimited/delimiter=" " bn_delimited_read_2.dat
 show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+ V2       V2                               1:3       ...       ...       ...       ...       ...
        (Time of day)
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+ V3       V3                               1:3       ...       ...       ...       ...       ...
        (all values missing)
  
 list v1,v2
@@ -36647,367 +36663,367 @@ show data/full
     1> ./bn_delimited_read_CO2.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V2       V2                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V3       V3                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V4       V4                               1:20      ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
             Data type = NUMERIC
             Conversion /TYPE=DATE
-             days on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+             days on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V5       V5                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V6       V6                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V7       V7                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V8       V8                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V9       V9                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V10      V10                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V11      V11                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V11      V11                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V12      V12                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V12      V12                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V13      V13                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V13      V13                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V14      V14                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V14      V14                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V15      V15                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V15      V15                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V16      V16                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V16      V16                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V17      V17                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V17      V17                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V18      V18                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V18      V18                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V19      V19                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V19      V19                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V20      V20                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V20      V20                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V21      V21                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V21      V21                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V22      V22                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V22      V22                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V23      V23                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V23      V23                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V24      V24                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V24      V24                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V25      V25                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V25      V25                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V26      V26                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V26      V26                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V27      V27                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V27      V27                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V28      V28                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V28      V28                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V29      V29                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V29      V29                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V30      V30                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V30      V30                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V31      V31                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V31      V31                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V32      V32                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V32      V32                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V33      V33                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V33      V33                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V34      V34                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V34      V34                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V35      V35                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V35      V35                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V36      V36                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V36      V36                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V37      V37                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V37      V37                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V38      V38                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V38      V38                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V39      V39                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V39      V39                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V40      V40                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V40      V40                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V41      V41                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V41      V41                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V42      V42                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V42      V42                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V43      V43                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V43      V43                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V44      V44                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V44      V44                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V45      V45                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V45      V45                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V46      V46                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V46      V46                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V47      V47                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V47      V47                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V48      V48                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V48      V48                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V49      V49                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V49      V49                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V50      V50                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V50      V50                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V51      V51                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V51      V51                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V52      V52                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V52      V52                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V53      V53                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V53      V53                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V54      V54                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V54      V54                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V55      V55                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V55      V55                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V56      V56                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V56      V56                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V57      V57                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V57      V57                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V58      V58                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V58      V58                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V59      V59                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V59      V59                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V60      V60                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V60      V60                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V61      V61                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V61      V61                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V62      V62                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V62      V62                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V63      V63                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V63      V63                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V64      V64                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V64      V64                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V65      V65                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V65      V65                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V66      V66                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V66      V66                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V67      V67                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V67      V67                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V68      V68                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V68      V68                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V69      V69                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V69      V69                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V70      V70                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V70      V70                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V71      V71                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V71      V71                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V72      V72                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V72      V72                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
  
  /DELIMITERS="\t,\,"
  /FORMAT = DELIMITED
@@ -37545,7 +37561,7 @@ set mode stupid
 set mode diag
 set mem/size=0.05
 show mem/free
- Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 100
@@ -48137,11 +48153,11 @@ let the_data_var = {4,5,4}
  
 list/format=comma country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
      COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR
 1   / 1:"JP",1,4000,1000500,"w",4  
@@ -48150,11 +48166,11 @@ list/format=comma country, id, aa, bb, newcountry, the_data_var
  
 list/format=tab/norow country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
 COUNTRY	ID	AA	BB	NEWCOUNTRY	THE_DATA_VAR
 "JP"	1	4000	1000500	"w"	4  
@@ -48292,7 +48308,7 @@ list element_index_str_n (axy[k=1:2,j=1:2], {"a10", "a2", "d4", "c5"})
  
 ! ferret version
 sh sym FERRET_VERSION
-FERRET_VERSION = "6.9"
+FERRET_VERSION = "6.93"
  
 ! history attribute
 let a = 12
@@ -48310,7 +48326,7 @@ LAB1 = "X : 0.5 to 314.5"
  
 ! show commands without an argument, lists version number at the top
 sho command
- Commands in Program FERRET  version6.9:
+ Commands in Program FERRET  version6.93:
  SET
  SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE
  SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN
@@ -48443,7 +48459,7 @@ go ptest
 PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20)
  
 sh sym win_title
-WIN_TITLE = "31-Mar-14:15:38"
+WIN_TITLE = "30-Oct-14:11:16"
  
 set win/title="set the title"
 sho sym win_title
@@ -48461,7 +48477,7 @@ sho sym win_title
 WIN_TITLE = "_"
  
 set win/title="($session_date):($session_time)"
- !-> set win/title="31-Mar-14:15:38"
+ !-> set win/title="30-Oct-14:11:16"
  
 ! If the date or time starts with a blank then we get an extra
 ! underscore in the window title. Evaluating the symbols into
@@ -48470,16 +48486,16 @@ set win/title="($session_date):($session_time)"
 ! If so substitute another string.
  
 DEFINE SYMBOL the_date = ($session_date"SESSION_DATE")
- !-> DEFINE SYMBOL the_date = 31-Mar-14
+ !-> DEFINE SYMBOL the_date = 30-Oct-14
 DEFINE SYMBOL the_time = ($session_time"SESSION_TIME")
- !-> DEFINE SYMBOL the_time = 15:38
+ !-> DEFINE SYMBOL the_time = 11:16
 SET WIN/TITLE="($the_date):($the_time)"
- !-> SET WIN/TITLE="31-Mar-14:15:38"
+ !-> SET WIN/TITLE="30-Oct-14:11:16"
  
 can win/all
 set win/new
 sh sym win_title
-WIN_TITLE = "31-Mar-14:15:38"
+WIN_TITLE = "30-Oct-14:11:16"
 *** Running test: bn_last_error.jnl
 ! bn_last_error.jnl
 ! acm Nov 2005
@@ -52738,8 +52754,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -52783,8 +52799,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54093,7 +54109,7 @@ set mem/siz=90
 sh sym ferret_memory
 FERRET_MEMORY = "90"
 show memory
- Current size of FERRET memory cache: 90 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 90 MegaWords  (1 word = 8 bytes)
  
 set mem/size=0.05
 sh sym ferret_memory
@@ -54105,7 +54121,7 @@ FERRET_MEMORY = "0.2"
  
 set mem/siz=25.6  ! return to the default setting
 show memory
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 *** Running test: bn605_bug_fixes.jnl
 ! bn604_bug_fixes.jnl
 ! test various fixes that went into version 6.05
@@ -54364,23 +54380,38 @@ EXPND_BY_LEN_STR(var,len,nx)
 FC_ISUBSET(index_list,lengths,nx,FullData)
 EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len)
 EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EXPNDI_BY_M_COUNTS(dat,counts,max_row_len)
 STR_MASK(STRING,MASK,--)
 SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
+SEPARATE(A,Rowsize,FixLongitudes)
 ADD_9(A,B,C,D,E,F,G,H,I)
 APPENDE(ENS,VAR)
 AVET(A)
 DATES(Offsets)
-EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EFSTRINGS(--)
 FACTORIAL(A)
 FFT_AMP(A)
 FFTA_SAMPLE(A)
 FFT_PHAS(A)
+LENGTH_OF_STRINGS(--)
+MAXSTRLEN(A)
 PASS_THRU(A)
+PASS_THRU_STRING(A)
 PERCENT_GOOD_T(A)
+PICK_A_STRING(A,N)
+PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3)
+SAMPLE_FAST_I(V,Indices)
+SEPARATE(A,Rowsize,FixLongitudes)
+SEPARATE_STR(A,Rowsize,FixLongitudes)
 STORAGE(A)
 STRING_ARG(Flags,NString)
+STRING_CAT3(A,B,C)
+STRING_LEN_SUM(S1,S2)
+STRINGS_AS_ARGS(S1,S2,NCHAR)
+STR_MISSING(MASK,STR,REPL)
 STUDENT_T_CUTOFF(P,nf)
 SUBTRACT(A,B)
+WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename)
  
 *** Running test: bn608_bug_fixes.jnl
 ! bn608_bug_fixes
@@ -54496,11 +54527,11 @@ GO err607_axis_minmax_syms
 use coads_climatology
 let plotvar = sst[L=1]
 plot/y=35 plotvar/10000; sh sym yax*
-YAXIS_MIN = "8.0000010E-04"
-YAXIS_MAX = "2.1000002E-03"
+YAXIS_MIN = "7.9999998E-04"
+YAXIS_MAX = "2.0999999E-03"
 plot/y=35 plotvar/10000000; sh sym yax*
-YAXIS_MIN = "8.0000012E-07"
-YAXIS_MAX = "2.1000003E-06"
+YAXIS_MIN = "8.0000001E-07"
+YAXIS_MAX = "2.1000001E-06"
 plot/y=35 plotvar*10000000; sh sym yax*
 YAXIS_MIN = "8.0000000E+07"
 YAXIS_MAX = "2.1000000E+08"
@@ -56217,13 +56248,13 @@ GO err611_shade_fill_levs
  
 shade x[gx=0:1:.1]*y[gy=0:1:.1]; sh sym lev*
 LEV_MIN = "0"
-LEV_MAX = "1"
-LEV_NUM = "20"
+LEV_MAX = "1.05"
+LEV_NUM = "21"
 LEV_DEL = "0.05"
 fill  x[gx=0:1:.1]*y[gy=0:1:.1]; sh sym lev*
 LEV_MIN = "0"
-LEV_MAX = "1"
-LEV_NUM = "20"
+LEV_MAX = "1.05"
+LEV_NUM = "21"
 LEV_DEL = "0.05"
  
  
@@ -56860,7 +56891,7 @@ SORTI(DAT)
           T: inherited from argument(s)
           E: inherited from argument(s)
           F: inherited from argument(s)
-    DAT: variable to sort in I
+    DAT: variable to sort in I (FLOAT)
         Influence on output axes:
           X: no influence (indicate argument limits with "[]")
           Y: passed to result grid
@@ -58481,10 +58512,10 @@ SH GRID am
  normal    F
 *** Running test: bn_clock_syms.jnl
 SH SYM delta_cpu, clock_secs, current_date, current_time
-DELTA_CPU = "0.010997"
-CLOCK_SECS = "0.006"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:38:20"
+DELTA_CPU = "0.028994"
+CLOCK_SECS = "0.003"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:17:55"
 ! test special symbols DELTA_CPU, CLOCK_SECS
 !
 ! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE
@@ -58493,8 +58524,8 @@ CURRENT_TIME = "15:38:20"
 use gt4d011
 shade/k=1 temp[L=@ave]
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.072989"
-CLOCK_SECS = "0.126"
+DELTA_CPU = "0.062991"
+CLOCK_SECS = "1.171"
  
 repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=1
@@ -58508,60 +58539,60 @@ repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=9
 !-> REPEAT: K=10
 let ten_plots = ($DELTA_CPU)
- !-> DEFINE VARIABLE ten_plots = 0.292956
+ !-> DEFINE VARIABLE ten_plots = 0.220966
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0"
-CLOCK_SECS = "0.493"
+DELTA_CPU = "0.001"
+CLOCK_SECS = "6.226"
  
 let  sumclock = 0
 let  sumcpu = 0
 sh sym CLOCK_SECS
-CLOCK_SECS = "0.495"
+CLOCK_SECS = "6.226"
 repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\
 let sumcpu =`sumcpu + dt`)
  !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`)
 !-> REPEAT: K=1
- !-> DEFINE VARIABLE dt = 0.029995
- !-> DEFINE VARIABLE sumcpu =0.029995
+ !-> DEFINE VARIABLE dt = 0.030995
+ !-> DEFINE VARIABLE sumcpu =0.030995
 !-> REPEAT: K=2
- !-> DEFINE VARIABLE dt = 0.033995
- !-> DEFINE VARIABLE sumcpu =0.06399
+ !-> DEFINE VARIABLE dt = 0.027997
+ !-> DEFINE VARIABLE sumcpu =0.058992
 !-> REPEAT: K=3
- !-> DEFINE VARIABLE dt = 0.030995
- !-> DEFINE VARIABLE sumcpu =0.094985
+ !-> DEFINE VARIABLE dt = 0.028995
+ !-> DEFINE VARIABLE sumcpu =0.087987
 !-> REPEAT: K=4
- !-> DEFINE VARIABLE dt = 0.037994
- !-> DEFINE VARIABLE sumcpu =0.132979
+ !-> DEFINE VARIABLE dt = 0.020997
+ !-> DEFINE VARIABLE sumcpu =0.108984
 !-> REPEAT: K=5
- !-> DEFINE VARIABLE dt = 0.030995
- !-> DEFINE VARIABLE sumcpu =0.163974
+ !-> DEFINE VARIABLE dt = 0.025996
+ !-> DEFINE VARIABLE sumcpu =0.13498
 !-> REPEAT: K=6
- !-> DEFINE VARIABLE dt = 0.032996
- !-> DEFINE VARIABLE sumcpu =0.19697
+ !-> DEFINE VARIABLE dt = 0.023996
+ !-> DEFINE VARIABLE sumcpu =0.158976
 !-> REPEAT: K=7
- !-> DEFINE VARIABLE dt = 0.032995
- !-> DEFINE VARIABLE sumcpu =0.229965
+ !-> DEFINE VARIABLE dt = 0.021997
+ !-> DEFINE VARIABLE sumcpu =0.180973
 !-> REPEAT: K=8
- !-> DEFINE VARIABLE dt = 0.030994
- !-> DEFINE VARIABLE sumcpu =0.260959
+ !-> DEFINE VARIABLE dt = 0.019996
+ !-> DEFINE VARIABLE sumcpu =0.200969
 !-> REPEAT: K=9
- !-> DEFINE VARIABLE dt = 0.030996
- !-> DEFINE VARIABLE sumcpu =0.291955
+ !-> DEFINE VARIABLE dt = 0.029996
+ !-> DEFINE VARIABLE sumcpu =0.230965
 !-> REPEAT: K=10
- !-> DEFINE VARIABLE dt = 0.034994
- !-> DEFINE VARIABLE sumcpu =0.326949
+ !-> DEFINE VARIABLE dt = 0.020997
+ !-> DEFINE VARIABLE sumcpu =0.251962
  
 say `sumcpu`
- !-> MESSAGE/CONTINUE 0.326949
-0.326949
+ !-> MESSAGE/CONTINUE 0.251962
+0.251962
 sh sym CLOCK_SECS
-CLOCK_SECS = "0.978"
+CLOCK_SECS = "14.836"
  
 SH SYM session_date, current_date, session_time, current_time
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:38"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:38:21"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:17"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:18:10"
 *** Running test: bn63_bug_fixes.jnl
 ! bn63_bug_fixes.jnl
 ! Fixes that go into v6.3 release
@@ -58871,8 +58902,8 @@ list yboxlo[g=grd],yboxhi[g=grd]
 11.2S / 15: -12.84  -9.59
 8S    / 16:  -9.59  -6.38
 4.8S  / 17:  -6.38  -3.18
-1.6S  / 18:  -3.18   0.00
-1.6N  / 19:   0.00   3.18
+1.6S  / 18:  -3.18  -0.00
+1.6N  / 19:  -0.00   3.18
 4.8N  / 20:   3.18   6.38
 8N    / 21:   6.38   9.59
 11.2N / 22:   9.59  12.84
@@ -62472,9 +62503,9 @@ list contents
              VARIABLE : { SPAWN:"cat redirect_journal.txt" }
              SUBSET   : 47 points (X)
  1    /  1:" ! NOAA/PMEL TMAP"                                                          
- 2    /  2:" ! FERRET v6.9 (beta)"                                                      
- 3    /  3:" ! Linux 2.6.18-371.4.1.el5 64-bit - 03/31/14"                              
- 4    /  4:" ! 31-Mar-14 15:38     "                                                    
+ 2    /  2:" ! FERRET v6.93 (beta)"                                                     
+ 3    /  3:" ! Linux 2.6.32-504.el6.x86_64 64-bit - 10/30/14"                           
+ 4    /  4:" ! 30-Oct-14 11:19     "                                                    
  5    /  5:""                                                                           
  6    /  6:"! "                                                                         
  7    /  7:"!! --- 22. produce some output to stdout and stderr"                        
@@ -62533,23 +62564,24 @@ sh trans
 variable transforms e.g.SST[T=1-jan:15-mar at DDC]
    code        description                  code        description
    ----        -----------                  ----        -----------
-   @ITP        interpolated                 @SPZ        Parzen smoothed
-   @AVE        averaged                     @FAV        ave-filled
-   @VAR        variance                     @FLN        linear-filled
-   @SUM        summed                       @FNR        nearest-filled
-   @RSU        running sum                  @NGD        number of valid
-   @SHF        shifted                      @NBD        number flagged bad
-   @MIN        minimum                      @LOC        location
-   @MAX        maximum                      @WEQ        weighted equal
-   @DDC        centered derivative          @CDA        closest dist above
-   @DDF        forward derivative           @CDB        closest dist below
-   @DDB        backwards derivative         @CIA        closest index above
-   @DIN        integrated                   @CIB        closest index below
-   @IIN        indef. integ.                @EVN        event mask
-   @SBX        box smoothed                 @MED        median smoothed
-   @SBN        binomial smoothed            @SMX        maximum smoothed
-   @SWL        Welch smoothed               @SMN        minimum smoothed
-   @SHN        Hanning smoothed             @STD        standard deviation
+   @ITP        interpolated                 @FAV        ave-filled
+   @AVE        averaged                     @FLN        linear-filled
+   @VAR        variance                     @FNR        nearest-filled
+   @SUM        summed                       @NGD        number of valid
+   @RSU        running sum                  @NBD        number flagged bad
+   @SHF        shifted                      @LOC        location
+   @MIN        minimum                      @WEQ        weighted equal
+   @MAX        maximum                      @CDA        closest dist above
+   @DDC        centered derivative          @CDB        closest dist below
+   @DDF        forward derivative           @CIA        closest index above
+   @DDB        backwards derivative         @CIB        closest index below
+   @DIN        integrated                   @EVN        event mask
+   @IIN        indef. integ.                @MED        median smoothed
+   @SBX        box smoothed                 @SMX        maximum smoothed
+   @SBN        binomial smoothed            @SMN        minimum smoothed
+   @SWL        Welch smoothed               @STD        standard deviation
+   @SHN        Hanning smoothed             @WGT        weights for avg,int
+   @SPZ        Parzen smoothed
  
 regridding transforms e.g.SST[GX=x5deg at AVE]
    code        description                  code        description
@@ -64907,130 +64939,130 @@ can mode ver
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.366
-randu2_randn2       0.453
-randu2_randn2       0.168
-randu2_randn2       0.168
-randu2_randn2       0.625
+randu2_randn2       0.527
+randu2_randn2       0.005
+randu2_randn2       0.868
+randu2_randn2       0.513
+randu2_randn2       0.881
              VARIABLE : RANDU2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.289
-randu2_randn2       0.817
-randu2_randn2       0.329
-randu2_randn2       0.467
-randu2_randn2       0.632
+randu2_randn2       0.138
+randu2_randn2       0.897
+randu2_randn2       0.700
+randu2_randn2       0.970
+randu2_randn2       0.978
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.221
-randu2_randn2       0.871
-randu2_randn2       0.518
-randu2_randn2       0.869
-randu2_randn2       0.823
-randu2_randn2       0.076
+randu2_randn2       0.432
+randu2_randn2       0.519
+randu2_randn2       0.131
+randu2_randn2       0.769
+randu2_randn2       0.876
+randu2_randn2       0.810
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.133
-randu2_randn2       0.307
-randu2_randn2       0.968
-randu2_randn2       0.061
-randu2_randn2       0.360
-randu2_randn2       0.176
+randu2_randn2       0.678
+randu2_randn2       0.492
+randu2_randn2       0.405
+randu2_randn2       0.765
+randu2_randn2       0.736
+randu2_randn2       0.568
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.343
-randu2_randn2       0.598
-randu2_randn2       0.888
-randu2_randn2       0.608
-randu2_randn2       0.446
-randu2_randn2       0.900
+randu2_randn2       0.302
+randu2_randn2       0.380
+randu2_randn2       0.926
+randu2_randn2       0.672
+randu2_randn2       0.238
+randu2_randn2       0.638
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.343
-randu2_randn2       0.598
-randu2_randn2       0.888
-randu2_randn2       0.608
-randu2_randn2       0.446
-randu2_randn2       0.900
+randu2_randn2       0.302
+randu2_randn2       0.380
+randu2_randn2       0.926
+randu2_randn2       0.672
+randu2_randn2       0.238
+randu2_randn2       0.638
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.503
-randu2_randn2      -0.100
-randu2_randn2      -0.195
-randu2_randn2      -0.083
-randu2_randn2       0.759
+randu2_randn2       0.354
+randu2_randn2       1.401
+randu2_randn2       0.440
+randu2_randn2       0.430
+randu2_randn2      -1.294
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2      -1.014
-randu2_randn2       0.051
-randu2_randn2       0.428
-randu2_randn2       2.756
-randu2_randn2      -0.107
+randu2_randn2       0.302
+randu2_randn2      -0.063
+randu2_randn2      -0.794
+randu2_randn2       0.971
+randu2_randn2      -2.604
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -1.086
-randu2_randn2       0.503
-randu2_randn2       0.481
-randu2_randn2      -2.318
-randu2_randn2       0.989
-randu2_randn2       0.355
+randu2_randn2       0.810
+randu2_randn2       0.335
+randu2_randn2      -0.531
+randu2_randn2      -0.837
+randu2_randn2      -0.772
+randu2_randn2      -1.977
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -0.942
-randu2_randn2       0.175
-randu2_randn2      -0.470
-randu2_randn2      -1.165
-randu2_randn2       0.158
-randu2_randn2      -0.485
+randu2_randn2      -1.337
+randu2_randn2       0.783
+randu2_randn2       1.666
+randu2_randn2      -0.327
+randu2_randn2       1.031
+randu2_randn2       1.036
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       1.052
-randu2_randn2      -1.694
-randu2_randn2       0.249
-randu2_randn2       0.895
-randu2_randn2       0.919
-randu2_randn2      -0.124
+randu2_randn2      -0.906
+randu2_randn2      -1.503
+randu2_randn2       0.217
+randu2_randn2       0.537
+randu2_randn2       0.674
+randu2_randn2      -1.279
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       1.052
-randu2_randn2      -1.694
-randu2_randn2       0.249
-randu2_randn2       0.895
-randu2_randn2       0.919
-randu2_randn2      -0.124
+randu2_randn2      -0.906
+randu2_randn2      -1.503
+randu2_randn2       0.217
+randu2_randn2       0.537
+randu2_randn2       0.674
+randu2_randn2      -1.279
              Z: 1 to 140
  Column  1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1)
  Column  2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z)
  Column  3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z)
-randu2_randn2       1.054       1.700       1.034
-randu2_randn2       1.700       1.054       1.034
-randu2_randn2       1.034       1.034       0.471
-randu2_randn2       0.471       0.471       0.471
-randu2_randn2      -0.082      -0.082       0.471
-randu2_randn2      -0.226      -0.082       0.471
-randu2_randn2       0.015       0.015       0.471
-randu2_randn2       0.429       0.429       0.471
+randu2_randn2       1.220       1.726       1.165
+randu2_randn2       1.726       1.220       1.165
+randu2_randn2       1.165       1.165       0.240
+randu2_randn2      -0.268      -0.268       0.247
+randu2_randn2      -0.608      -0.585       0.247
+randu2_randn2      -0.585      -0.585       0.247
+randu2_randn2       0.240       0.240       0.247
+randu2_randn2       0.247       0.247       0.247
 *** Running test: bn_axis_cf.jnl
 ! Ticket 1792: Write axes with CF-compliant units
 ! and with standard name attributes for geophysical attrs.
@@ -65459,7 +65491,7 @@ list eofsvd_space(spacetime)
              1       2     
               1       2
  1   / 1:  0.0000 -0.7071
- 2   / 2: -0.7071  0.0000
+ 2   / 2: -0.7071 -0.0000
  
 show func eofsvd_tfunc
 EOFSVD_TFUNC(A)
@@ -65472,7 +65504,7 @@ list eofsvd_tfunc(spacetime)
              SUBSET   : 2 by 240 points (X-T)
                  1      2    
                  1      2
- 0     /   1:  0.000 -1.414
+ 0     /   1: -0.000 -1.414
  0.25  /   2: -0.185 -1.402
  0.5   /   3: -0.366 -1.366
  0.75  /   4: -0.541 -1.307
@@ -65484,7 +65516,7 @@ list eofsvd_tfunc(spacetime)
  2.25  /  10: -1.307 -0.541
  2.5   /  11: -1.366 -0.366
  2.75  /  12: -1.402 -0.185
- 3     /  13: -1.414  0.000
+ 3     /  13: -1.414 -0.000
  3.25  /  14: -1.402  0.185
  3.5   /  15: -1.366  0.366
  3.75  /  16: -1.307  0.541
@@ -65496,7 +65528,7 @@ list eofsvd_tfunc(spacetime)
  5.25  /  22: -0.541  1.307
  5.5   /  23: -0.366  1.366
  5.75  /  24: -0.185  1.402
- 6     /  25:  0.000  1.414
+ 6     /  25: -0.000  1.414
  6.25  /  26:  0.185  1.402
  6.5   /  27:  0.366  1.366
  6.75  /  28:  0.541  1.307
@@ -65532,7 +65564,7 @@ list eofsvd_tfunc(spacetime)
  14.25 /  58: -1.307 -0.541
  14.5  /  59: -1.366 -0.366
  14.75 /  60: -1.402 -0.185
- 15    /  61: -1.414  0.000
+ 15    /  61: -1.414 -0.000
  15.25 /  62: -1.402  0.185
  15.5  /  63: -1.366  0.366
  15.75 /  64: -1.307  0.541
@@ -65544,7 +65576,7 @@ list eofsvd_tfunc(spacetime)
  17.25 /  70: -0.541  1.307
  17.5  /  71: -0.366  1.366
  17.75 /  72: -0.185  1.402
- 18    /  73:  0.000  1.414
+ 18    /  73: -0.000  1.414
  18.25 /  74:  0.185  1.402
  18.5  /  75:  0.366  1.366
  18.75 /  76:  0.541  1.307
@@ -65580,7 +65612,7 @@ list eofsvd_tfunc(spacetime)
  26.25 / 106: -1.307 -0.541
  26.5  / 107: -1.366 -0.366
  26.75 / 108: -1.402 -0.185
- 27    / 109: -1.414  0.000
+ 27    / 109: -1.414 -0.000
  27.25 / 110: -1.402  0.185
  27.5  / 111: -1.366  0.366
  27.75 / 112: -1.307  0.541
@@ -65592,7 +65624,7 @@ list eofsvd_tfunc(spacetime)
  29.25 / 118: -0.541  1.307
  29.5  / 119: -0.366  1.366
  29.75 / 120: -0.185  1.402
- 30    / 121:  0.000  1.414
+ 30    / 121: -0.000  1.414
  30.25 / 122:  0.185  1.402
  30.5  / 123:  0.366  1.366
  30.75 / 124:  0.541  1.307
@@ -65604,7 +65636,7 @@ list eofsvd_tfunc(spacetime)
  32.25 / 130:  1.307  0.541
  32.5  / 131:  1.366  0.366
  32.75 / 132:  1.402  0.185
- 33    / 133:  1.414  0.000
+ 33    / 133:  1.414 -0.000
  33.25 / 134:  1.402 -0.185
  33.5  / 135:  1.366 -0.366
  33.75 / 136:  1.307 -0.541
@@ -65628,7 +65660,7 @@ list eofsvd_tfunc(spacetime)
  38.25 / 154: -1.307 -0.541
  38.5  / 155: -1.366 -0.366
  38.75 / 156: -1.402 -0.185
- 39    / 157: -1.414  0.000
+ 39    / 157: -1.414 -0.000
  39.25 / 158: -1.402  0.185
  39.5  / 159: -1.366  0.366
  39.75 / 160: -1.307  0.541
@@ -65640,7 +65672,7 @@ list eofsvd_tfunc(spacetime)
  41.25 / 166: -0.541  1.307
  41.5  / 167: -0.366  1.366
  41.75 / 168: -0.185  1.402
- 42    / 169:  0.000  1.414
+ 42    / 169: -0.000  1.414
  42.25 / 170:  0.185  1.402
  42.5  / 171:  0.366  1.366
  42.75 / 172:  0.541  1.307
@@ -65652,7 +65684,7 @@ list eofsvd_tfunc(spacetime)
  44.25 / 178:  1.307  0.541
  44.5  / 179:  1.366  0.366
  44.75 / 180:  1.402  0.185
- 45    / 181:  1.414  0.000
+ 45    / 181:  1.414 -0.000
  45.25 / 182:  1.402 -0.185
  45.5  / 183:  1.366 -0.366
  45.75 / 184:  1.307 -0.541
@@ -65676,7 +65708,7 @@ list eofsvd_tfunc(spacetime)
  50.25 / 202: -1.307 -0.541
  50.5  / 203: -1.366 -0.366
  50.75 / 204: -1.402 -0.185
- 51    / 205: -1.414  0.000
+ 51    / 205: -1.414 -0.000
  51.25 / 206: -1.402  0.185
  51.5  / 207: -1.366  0.366
  51.75 / 208: -1.307  0.541
@@ -65688,7 +65720,7 @@ list eofsvd_tfunc(spacetime)
  53.25 / 214: -0.541  1.307
  53.5  / 215: -0.366  1.366
  53.75 / 216: -0.185  1.402
- 54    / 217:  0.000  1.414
+ 54    / 217: -0.000  1.414
  54.25 / 218:  0.185  1.402
  54.5  / 219:  0.366  1.366
  54.75 / 220:  0.541  1.307
@@ -65743,14 +65775,14 @@ list eofsvd_space(space12)
              1       2       3     
               1       2       3
  1   / 1:  0.0000 -0.7071    ....
- 2   / 2: -0.7071  0.0000    ....
+ 2   / 2: -0.7071 -0.0000    ....
  3   / 3:    ....    ....    ....
 list eofsvd_tfunc(space12)
              VARIABLE : EOFSVD_TFUNC(SPACE12)
              SUBSET   : 3 by 240 points (X-T)
                  1      2      3    
                  1      2      3
- 0     /   1:  0.000 -1.414   ....
+ 0     /   1: -0.000 -1.414   ....
  0.25  /   2: -0.185 -1.402   ....
  0.5   /   3: -0.366 -1.366   ....
  0.75  /   4: -0.541 -1.307   ....
@@ -65762,7 +65794,7 @@ list eofsvd_tfunc(space12)
  2.25  /  10: -1.307 -0.541   ....
  2.5   /  11: -1.366 -0.366   ....
  2.75  /  12: -1.402 -0.185   ....
- 3     /  13: -1.414  0.000   ....
+ 3     /  13: -1.414 -0.000   ....
  3.25  /  14: -1.402  0.185   ....
  3.5   /  15: -1.366  0.366   ....
  3.75  /  16: -1.307  0.541   ....
@@ -65774,7 +65806,7 @@ list eofsvd_tfunc(space12)
  5.25  /  22: -0.541  1.307   ....
  5.5   /  23: -0.366  1.366   ....
  5.75  /  24: -0.185  1.402   ....
- 6     /  25:  0.000  1.414   ....
+ 6     /  25: -0.000  1.414   ....
  6.25  /  26:  0.185  1.402   ....
  6.5   /  27:  0.366  1.366   ....
  6.75  /  28:  0.541  1.307   ....
@@ -65810,7 +65842,7 @@ list eofsvd_tfunc(space12)
  14.25 /  58: -1.307 -0.541   ....
  14.5  /  59: -1.366 -0.366   ....
  14.75 /  60: -1.402 -0.185   ....
- 15    /  61: -1.414  0.000   ....
+ 15    /  61: -1.414 -0.000   ....
  15.25 /  62: -1.402  0.185   ....
  15.5  /  63: -1.366  0.366   ....
  15.75 /  64: -1.307  0.541   ....
@@ -65822,7 +65854,7 @@ list eofsvd_tfunc(space12)
  17.25 /  70: -0.541  1.307   ....
  17.5  /  71: -0.366  1.366   ....
  17.75 /  72: -0.185  1.402   ....
- 18    /  73:  0.000  1.414   ....
+ 18    /  73: -0.000  1.414   ....
  18.25 /  74:  0.185  1.402   ....
  18.5  /  75:  0.366  1.366   ....
  18.75 /  76:  0.541  1.307   ....
@@ -65858,7 +65890,7 @@ list eofsvd_tfunc(space12)
  26.25 / 106: -1.307 -0.541   ....
  26.5  / 107: -1.366 -0.366   ....
  26.75 / 108: -1.402 -0.185   ....
- 27    / 109: -1.414  0.000   ....
+ 27    / 109: -1.414 -0.000   ....
  27.25 / 110: -1.402  0.185   ....
  27.5  / 111: -1.366  0.366   ....
  27.75 / 112: -1.307  0.541   ....
@@ -65870,7 +65902,7 @@ list eofsvd_tfunc(space12)
  29.25 / 118: -0.541  1.307   ....
  29.5  / 119: -0.366  1.366   ....
  29.75 / 120: -0.185  1.402   ....
- 30    / 121:  0.000  1.414   ....
+ 30    / 121: -0.000  1.414   ....
  30.25 / 122:  0.185  1.402   ....
  30.5  / 123:  0.366  1.366   ....
  30.75 / 124:  0.541  1.307   ....
@@ -65882,7 +65914,7 @@ list eofsvd_tfunc(space12)
  32.25 / 130:  1.307  0.541   ....
  32.5  / 131:  1.366  0.366   ....
  32.75 / 132:  1.402  0.185   ....
- 33    / 133:  1.414  0.000   ....
+ 33    / 133:  1.414 -0.000   ....
  33.25 / 134:  1.402 -0.185   ....
  33.5  / 135:  1.366 -0.366   ....
  33.75 / 136:  1.307 -0.541   ....
@@ -65906,7 +65938,7 @@ list eofsvd_tfunc(space12)
  38.25 / 154: -1.307 -0.541   ....
  38.5  / 155: -1.366 -0.366   ....
  38.75 / 156: -1.402 -0.185   ....
- 39    / 157: -1.414  0.000   ....
+ 39    / 157: -1.414 -0.000   ....
  39.25 / 158: -1.402  0.185   ....
  39.5  / 159: -1.366  0.366   ....
  39.75 / 160: -1.307  0.541   ....
@@ -65918,7 +65950,7 @@ list eofsvd_tfunc(space12)
  41.25 / 166: -0.541  1.307   ....
  41.5  / 167: -0.366  1.366   ....
  41.75 / 168: -0.185  1.402   ....
- 42    / 169:  0.000  1.414   ....
+ 42    / 169: -0.000  1.414   ....
  42.25 / 170:  0.185  1.402   ....
  42.5  / 171:  0.366  1.366   ....
  42.75 / 172:  0.541  1.307   ....
@@ -65930,7 +65962,7 @@ list eofsvd_tfunc(space12)
  44.25 / 178:  1.307  0.541   ....
  44.5  / 179:  1.366  0.366   ....
  44.75 / 180:  1.402  0.185   ....
- 45    / 181:  1.414  0.000   ....
+ 45    / 181:  1.414 -0.000   ....
  45.25 / 182:  1.402 -0.185   ....
  45.5  / 183:  1.366 -0.366   ....
  45.75 / 184:  1.307 -0.541   ....
@@ -65954,7 +65986,7 @@ list eofsvd_tfunc(space12)
  50.25 / 202: -1.307 -0.541   ....
  50.5  / 203: -1.366 -0.366   ....
  50.75 / 204: -1.402 -0.185   ....
- 51    / 205: -1.414  0.000   ....
+ 51    / 205: -1.414 -0.000   ....
  51.25 / 206: -1.402  0.185   ....
  51.5  / 207: -1.366  0.366   ....
  51.75 / 208: -1.307  0.541   ....
@@ -65966,7 +65998,7 @@ list eofsvd_tfunc(space12)
  53.25 / 214: -0.541  1.307   ....
  53.5  / 215: -0.366  1.366   ....
  53.75 / 216: -0.185  1.402   ....
- 54    / 217:  0.000  1.414   ....
+ 54    / 217: -0.000  1.414   ....
  54.25 / 218:  0.185  1.402   ....
  54.5  / 219:  0.366  1.366   ....
  54.75 / 220:  0.541  1.307   ....
@@ -70698,8 +70730,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70753,8 +70785,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70797,8 +70829,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70841,8 +70873,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70878,8 +70910,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70916,8 +70948,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70983,8 +71015,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71032,8 +71064,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71093,8 +71125,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71134,8 +71166,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71175,8 +71207,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71216,8 +71248,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71254,8 +71286,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71482,8 +71514,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        FLOAT     units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71520,8 +71552,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        FLOAT     units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71567,8 +71599,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71611,8 +71643,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -71636,8 +71668,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             INT       units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -71661,8 +71693,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -72090,8 +72122,8 @@ variables:
 		A:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72119,8 +72151,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72170,8 +72202,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72641,6 +72673,54 @@ sh grid sal
  normal    T
  normal    E
  normal    F
+ 
+! This file from the datset "West Coast Carbon cruises" in our
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+ 
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ 
+sh dat 2
+     currently SET data sets:
+    2> ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc  (default)
+ name     title                             I         J         K         L         M         N
+ PROF     Prof                             ...       ...       ...       ...       1:21      ...
+ TIME     Time                             ...       ...       ...       ...       1:21      ...
+ LATITUDE Latitude                         ...       ...       ...       ...       1:21      ...
+ LONGITUDE
+          Longitude                        ...       ...       ...       ...       1:21      ...
+ ROWSIZE  Number of Observations for this  ...       ...       ...       ...       1:21      ...
+ PRESS_DB PRESS_DB                         1:373     ...       ...       ...       ...       ...
+ PCO2     PCO2                             1:373     ...       ...       ...       ...       ...
+ 
+sh att (profile)
+     attributes for dataset: ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ (profile)._FillValue = -1.E+34
+ (profile).actual_range = 70, 90
+ (profile).cf_role = profile_id 
+ (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt 
+ (profile).long_name = profile ID: Cruise and Station 
+ (profile).missing_value = -1.E+34
+ (profile).orig_file_axname = profile 
+sh grid rowsize
+    GRID GSS1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ normal    T
+ PROFILE   E                   21 r   70                   90
+ normal    F
+sh grid pco2
+    GRID GSS2
+ name       axis              # pts   start                end
+ OBS1      X                  373 r   1                    373
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
 *** Running test: bn_nco_append.jnl
 ! bn_nco_append.jnl
 ! 5/2013 add a test appending files with ncks
@@ -72686,8 +72766,8 @@ variables:
 		CYCLE_ORIG:history = "From z2" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_nobounds.jnl
 ! bn_nobounds.jnl
@@ -72716,8 +72796,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -72747,8 +72827,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -72809,8 +72889,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! On a SAVE either with /BOUNDS or no bounds qualifier,
@@ -72837,8 +72917,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 *** Running test: bn_write_integer_att.jnl
@@ -73998,8 +74078,8 @@ variables:
 		LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! The behavior is unchanged for user-defined variables
@@ -74021,8 +74101,8 @@ variables:
 		STRVAR:long_name = "mystrings" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 *** Running test: bn_single_colorlev.jnl
@@ -74043,8 +74123,8 @@ shade/lev=(25)/L=1 INT(sst)
 fill/lev=(20,30,10)/L=1 sst
  
 *** Running test: bn69_bug_fixes.jnl
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
  
 GO bn_reset
@@ -74241,8 +74321,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Yet more combinations
@@ -74271,8 +74351,8 @@ variables:
 		A:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST
@@ -74292,8 +74372,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Subsets also use XAXIS_TEST1
@@ -74313,8 +74393,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Unless we use /KEEP_AXISNAMES - which removes renaming
@@ -74335,8 +74415,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! If we try /KEEP_AXISNAMES but there is a conflict, it's an err
@@ -74443,6 +74523,15 @@ sh var
      C = 1
  
 use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+ 
+let a = 1
+let b = 2
+set var/name=b a
+ 
+! Intentional error, new name already in file
+ 
+ 
 ! Intentional error, new name already in file
 set var/name=temp salt
 show dat
@@ -74496,7 +74585,8 @@ show dat
  DIFF[D=gt4d011] = TAUX - TAUY
  
  
- 
+! another error, new name is a user-var
+yes? set var/name=diff w
  
 SET MODE/LAST ignore
 *** Running test: bn_bad_axis_bounds.jnl
@@ -74734,8 +74824,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74750,8 +74840,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74766,8 +74856,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        22   T       FERRET V6.9  31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        23   T       FERRET V6.93  30-Oct-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74791,6 +74881,2048 @@ set axis/name=45 x_in_meters
 set axis/name=.fr x_in_meters
  
 set mode/last ignore
+*** Running test: bn691_bug_fixes.jnl
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
+ 
+GO bn_reset
+cancel mode verify
+GO err69_arg_type_error
+! err69_arg_type_error
+! See ticket 2169
+!
+set mode ignore
+sh func  tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+    A: time steps to convert
+    B: variable with reference time axis
+    C: output precision (STRING)
+sh func /detail tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+        Axes of result:
+          X: inherited from argument(s)
+          Y: inherited from argument(s)
+          Z: inherited from argument(s)
+          T: inherited from argument(s)
+          E: inherited from argument(s)
+          F: inherited from argument(s)
+    A: time steps to convert (FLOAT)
+        Influence on output axes:
+          X: passed to result grid
+          Y: passed to result grid
+          Z: passed to result grid
+          T: passed to result grid
+          E: passed to result grid
+          F: passed to result grid
+    B: variable with reference time axis (FLOAT)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+    C: output precision (STRING)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+ 
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+             VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes")
+             TIME     : 03-JAN-2000 00:00
+        "03-JAN-2000 00:00"
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ 
+set mode /last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_bad_bounds
+! err69_bad_bounds.jnl
+! See ticket 2170
+ 
+set mode ignore
+ 
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_even.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_PTSPAC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_non_enclose.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_uneven.nc
+             TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_IRR)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  7.000
+13-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  4.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+sh axis TAX_BB*
+ name       axis              # pts   start                end
+ TAX_BB_IRR TIME                6 i   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 31
+ TAX_BB_EVEN_NOENC TIME         6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ TAX_BB_PTSPAC TIME             6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_const_array
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174
+! expressions are not allowed in constant-array definitions.
+ 
+set mode ignore
+ 
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
+ 
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
+ 
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
+ 
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+ 
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+             VARIABLE : {-0.001, 1.23E-2, -45.E3}
+             SUBSET   : 3 points (X)
+ 1   / 1:     -0.001
+ 2   / 2:      0.012
+ 3   / 3: -45000.000
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_multi_label_ascii
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM
+! ticket 2176
+! Multi-line labels and ascii fonts.
+ 
+plot/vs/nolab {0,1},{0,1}
+ 
+ 
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+ 
+ 
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+ 
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+ 
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+ 
+! escape just the special characters.
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+ 
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ens_badvalue
+! err69_ens_badvalue.jnl
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled
+! when defining an ensemble.
+ 
+use maize_1.nc, maize_2.nc, maize_3.nc
+ 
+! Note the _FillValue,  flag
+sho att maize_yield
+     attributes for dataset: ./maize_3.nc
+ MAIZE_YIELD._FillValue = 9.96921E+36
+ MAIZE_YIELD.long_name =  Maize harvest 
+ MAIZE_YIELD.units = kgC.m-2.yr-1 
+ MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize 
+ensemble ens = 1,2,3
+ 
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
+             LONGITUDE: 8W(-8) to 6W(-6)
+             LATITUDE: 29.3N
+             E: 0.5 to 3.5 (number of valid)
+ Column  1: MAIZE_YIELD[D=maize_1] is  Maize harvest (kgC.m-2.yr-1)
+ Column  2: MAIZE_YIELD[D=maize_2] is  Maize harvest (kgC.m-2.yr-1)
+ Column  3: MAIZE_YIELD[D=maize_3] is  Maize harvest (kgC.m-2.yr-1)
+ Column  4: MAIZE_YIELD[D=ENS] is  Maize harvest (# of points)
+        MAIZE_YIELD  MAIZE_YI MAIZE_Y MAIZE_YIELD
+7.75W  / 1:     ....  0.05247  0.1022   2.000
+7.25W  / 2:  0.01818  0.03588  0.0049   3.000
+6.75W  / 3: -0.00002  0.02030 -0.0139   3.000
+6.25W  / 4:     ....     ....    ....   0.000
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_by_levels
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_histogram
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
+ 
+GO bn_reset
+cancel mode verify
+GO err69_repl_scinot
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+ 
+let a = 1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (1.E-10)
+(1.E-10)
+ 
+let a = -1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.E-10)
+(-1.E-10)
+ 
+let a = -1.23e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.23E-10)
+(-1.23E-10)
+ 
+let a = -1.23e-2
+say (`a`)
+ !-> MESSAGE/CONTINUE (-0.0123)
+(-0.0123)
+ 
+GO bn_reset
+cancel mode verify
+GO err691_bnds_case
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+ 
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+ 
+set mode/last upcase_output
+ 
+GO bn_reset
+cancel mode verify
+GO err69_plot_vs_labs
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
+ 
+use coads_climatology
+ 
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+set v right; plot/vs c,b; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+set v right; plot/trans/vs c,b; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+GO bn_reset
+cancel mode verify
+GO err69_levels_v
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes
+! made to throw out data outside 3 std when
+! computing the mean and std dev for color levels.
+ 
+use "lev_v_bug.nc"
+shade/lev=v var2d
+ 
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+LEV_TEXT = "V"
+LEV_HISTO_LEVELS = "1.1,1.2,1.6,1.9,2.4,2.5,3.8,5.4,10.2,13.6,14.9"
+LEV_MIN = "-1.E+34"
+LEV_MAX = "5.0000E+32"
+LEV_NUM = "21"
+LEV_DEL = "5.0000E+32"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_letd_dsetnum
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
+ 
+use coads_climatology
+let/d=`sst,r=dsetnum` a = 1
+ !-> DEFINE VARIABLE/d=1 a = 1
+sh dat
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ ------------------------------
+ A[D=coads_climatology] = 1
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_long_string_to_xml
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+!
+ 
+list/clobber/file="out.xml"/nohead/norow 1
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+ 
+sp cat out.xml
+   1.000
+<mytag><![CDATA[Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC200406 [...]
+ 
+GO bn_reset
+cancel mode verify
+GO err69_fill_trans
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+ 
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+ 
+list myvar
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             SUBSET   : 15 points (X)
+ 1    /  1:  1.000
+ 2    /  2:  2.000
+ 3    /  3:  3.000
+ 4    /  4:   ....
+ 5    /  5:   ....
+ 6    /  6:   ....
+ 7    /  7:   ....
+ 8    /  8:   ....
+ 9    /  9:   ....
+ 10   / 10:  4.000
+ 11   / 11:   ....
+ 12   / 12:  5.000
+ 13   / 13:  6.000
+ 14   / 14:  7.000
+ 15   / 15:  8.000
+list myvar[x=6 at fnr:2]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 2 pts)
+        ....
+ 
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 10 pts)
+          3.000
+ 
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (ave-filled by 18 pts)
+          4.500
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_load_big_grid
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+ 
+set mode ignore
+ 
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+ 
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+    GRID (G004)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              1828 r   01-JAN-2000 00:00    01-JAN-2005 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+    GRID (G004)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              3654 r   01-JAN-2000 00:00    01-JAN-2010 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+cancel mode ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_write_attribute
+! err69_write_attribute.jnl
+! Bug 1863
+ 
+use gt4d011.cdf
+sh grid temp
+    GRID PS3DT2
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+ PSYT      LATITUDE           100 i   28.836S              48.568N
+ PSZT      DEPTH (m)           27 i-  5                    3824
+ TIME1     TIME                25 r   17-AUG-1982 12:00    10-JAN-1983 12:00
+ normal    E
+ normal    F
+let a = temp[x=@ave,y=@ave,L=1]
+ 
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (PSZT).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double A(TIME1, PSZT1_10) ;
+ 
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double B(TIME1, PSZT1_10) ;
+ 
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i  "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double C(PSZT1_10) ;
+ 
+can data/all
+can var/all
+ 
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+ 
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+ 
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+ 
+use aa
+use bb
+set data 1
+ 
+show att (`temp,r=zaxis`)
+ !-> show att (ZZDEP)
+     attributes for dataset: ./aa.nc
+ (ZZDEP).point_spacing = uneven 
+ (ZZDEP).axis = Z 
+ (ZZDEP).bounds = ZZDEP_bnds 
+ (ZZDEP).positive = down 
+ (ZZDEP).standard_name = depth 
+ (ZZDEP).orig_file_axname = ZZDEP 
+ 
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP1).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP1
+	ZZDEP1 = 15 ;
+	double ZZDEP1(ZZDEP1) ;
+		ZZDEP1:axis = "Z" ;
+		ZZDEP1:bounds = "ZZDEP1_bnds" ;
+		ZZDEP1:positive = "down" ;
+		ZZDEP1:standard_name = "depth" ;
+	double ZZDEP1_bnds(ZZDEP1, bnds) ;
+	double A(ZZDEP1) ;
+ 
+let a = temp[d=2,gz=temp[d=1]]
+ 
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+ 
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+sp rm aa.nc bb.nc
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_countervar_context
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+ 
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+!-> REPEAT: B:1
+ !-> MESSAGE/CONTINUE 1
+1
+!-> REPEAT: B:2
+ !-> MESSAGE/CONTINUE 2
+2
+!-> REPEAT: B:3
+ !-> MESSAGE/CONTINUE 3
+3
+ 
+can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_label_backspace
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+ 
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_and_regridding
+! err69_isready_and_regridding.jnl
+! Ticket 2204: A `var,return=isready` sends Ferret into a hanged
+! state after other contexts have been defined
+ 
+can dat/all
+ 
+! create & load a file with a Gregorian time axis
+def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135}
+let a = t[gt=tax_g]
+save/clob/file=a.nc a
+can var a
+can ax tax_g
+use a.nc
+ 
+! create a variable on a Julian time axis
+def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j
+let b = t[gt=tax_j]
+ 
+! put the Gregorian data on the Julian axis
+let a2 = a
+let a2_on_b = a2[gt=b]
+ 
+! create a climatological axis (Julian)
+def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75}
+ 
+let b_one = missing(1+0*b,1)      !set everything to 1
+let nyr = b_one[gl=tax_jc at modsum] !# years that include each month
+ 
+! Execute some commands which put things into context storage
+ 
+say `a2_on_b,r=title`
+ !-> MESSAGE/CONTINUE A2[GT=B]
+A2[GT=B]
+say `nyr[l=1]`
+ !-> MESSAGE/CONTINUE 23
+23
+ 
+! This got us into a weird hanged state
+IF `a2_on_b,r=isready` THEN
+ !-> IF 1         THEN
+ENDIF
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_and_uvar_regrid
+! err69_vtree_and_uvar_regrid.jnl
+! Ticket 2206: This lead to a crash.
+! 10/9/2014
+ 
+let a = t[gt=1:2:1]
+let b2 = a
+let c = b2[gt=a]
+GO bn_vtree.sub c
+/TREE=ALL
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=USER
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_cancel_axis
+! err69_vtree_cancel_axis
+! Ticket 2201: After a return=isready,
+! cannot cancel the axis used by the var
+! 10-Oct-2014
+ 
+define axis/x=0:360:1 xax1
+define axis/x=0:360:10 xax2
+ 
+let a = x[gx=xax1]
+say `a,return=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX1]
+X[GX=XAX1]
+ 
+let b = a[gx=xax2]
+say `b,return=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+cancel var a b
+cancel axis xax1
+cancel axis xax2
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_bugs
+! err69_isready_bugs.jnl
+! Tickets 2201 and 2215
+ 
+! ticket 2201: isready operation meant we couldn't cancel the second axis
+ 
+def ax/x=0:360:1 xax_isready_1
+def ax/x=0:360:10 xax_isready_2
+let a = x[gx=xax_isready_1]
+say `a,r=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX_ISREADY_1]
+X[GX=XAX_ISREADY_1]
+let b = a[gx=xax_isready_2]
+load b
+say `b,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+ 
+can var a
+can axis xax_isready_1
+can var b
+can axis xax_isready_2
+ 
+! Ticket 2215, only with an unreleased Ferret; the first fix to 2201.
+ 
+let a = x[gx=1:3:1]
+let b = a - a[gx=a]
+let c = 1
+let/unit="m" f = b*c
+say `f,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+say `f,r=unit`
+ !-> MESSAGE/CONTINUE m
+m
+*** Running test: bn_append_dsg.jnl
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced.
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!
+! We append more variables to the file, using the same obs dimension.
+ 
+sp rm test_save_dsg.nc
+sp cp test_save_dsg_in.nc test_save_dsg.nc
+ 
+use test_save_dsg.nc
+ 
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+ 
+save/quiet/append/file=test_save_dsg.nc lon360
+ 
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+ 
+sp ncdump -h test_save_dsg.nc
+netcdf test_save_dsg {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:History = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "CF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+}
+*** Running test: bn_global_atts.jnl
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41
+ 
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+netcdf global {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventions" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+sp ncdump -h global_copy.nc
+netcdf global_copy {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0FERRET V6.93  30-Oct-14" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventionsCF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+ 
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+ 
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.71    9-May-14 
+ ..Conventions = Existing conventions note, CF-1.0 
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.93  30-Oct-14 
+ ..Conventions = Existing conventions note, , CF-1.6 
+ 
+ 
+ 
+*** Running test: bn_conventions_history.jnl
+! bn_conventions_history.jnl
+! ticket 2169:
+! Write conventions CF-1.6
+! When appending to the Conventions and history
+! attribute, add the new stuff with a comma and newline.
+ 
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the file 
+ ..Conventions = Conventions for variables named V2 
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the fileFERRET V6.93  30-Oct-14 
+ ..Conventions = Conventions for variables named V2CF-1.6 
+*** Running test: bn_center_key_labels.jnl
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key
+ 
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+ 
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+ 
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+ 
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+ 
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up
+ 
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+ 
+can data coads_climatology
+ 
+! Automatically restore regular handling of levels
+shade temp
+ 
+*** Running test: bn_wgt_transform.jnl
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+ 
+! Define an XYT grid
+ 
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+ 
+! Varies in y with latitude correction
+shade/l=1 weights
+ 
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+             VARIABLE : VAR[X=@WGT,Y=@WGT]
+             LONGITUDE: 1E to 1E(361) (XY summed)
+             LATITUDE : 90S to 90N (XY summed)
+             TIME     : 16-JAN 12:00
+          5.101E+14
+ 
+! Varies in T because of irregular t axis
+shade/x=1 weights
+ 
+ 
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+ 
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+             TIME: 01-JAN 00:00 to 31-DEC 05:49
+             LONGITUDE: 2E
+             LATITUDE: 1N
+ Column  1: MYWT is VAR[T=@WGT]
+ Column  2: EX#2 is MYWT/SECPERDAY
+                         MYWT   EX#2
+16-JAN 12      /  1:  2678400.  31.00
+15-FEB 02      /  2:  2440152.  28.24
+15-MAR 17      /  3:  2678400.  31.00
+15-APR 05      /  4:  2592000.  30.00
+15-MAY 17      /  5:  2678400.  31.00
+15-JUN 05      /  6:  2592000.  30.00
+15-JUL 17      /  7:  2678400.  31.00
+15-AUG 17      /  8:  2678400.  31.00
+15-SEP 05      /  9:  2592000.  30.00
+15-OCT 17      / 10:  2678400.  31.00
+15-NOV 05      / 11:  2592000.  30.00
+15-DEC 17      / 12:  2678400.  31.00
+ 
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 9 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:  10.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:  10.00
+ 55    / 6:  10.00
+ 65    / 7:  10.00
+ 75    / 8:  10.00
+ 85    / 9:   2.00
+ 
+! This finds the previous result in memory - needs to
+! reuse the correct one.
+ 
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+*** Running test: bn_show_outfile.jnl
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE=
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+ 
+! test various combinations of /append and /clobber
+ 
+!can mode verify
+ 
+! show axis/outfile
+ 
+ 
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+ 
+SAY ---------------- Just axis month_irreg
+---------------- Just axis month_irreg
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ 
+show axis/append/outfile=a.txt PS*
+ 
+SAY ---------------- appending all axes starting with PS
+---------------- appending all axes starting with PS
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSXU      LONGITUDE          160mr   131E                 70W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT      LATITUDE           100 i   28.836S              48.568N
+   Axis span (to cell edges) = 80.00004
+ PSYU      LATITUDE           100 i   27.672S              50N
+   Axis span (to cell edges) = 80.2682
+ PSZT      DEPTH (m)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSZW      DEPTH (m)           27 i-  10                   4149
+   Axis span (to cell edges) = 4144
+ 
+! show grid/outfile
+ 
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just the grid of sst
+---------------- Just the grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME      TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+! show var/outfile
+ 
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+ 
+SAY ---------------- show var output from two user vars
+---------------- show var output from two user vars
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+cancel var/all
+ 
+! show data/outfile
+ 
+show data/append/outfile=a.txt
+ 
+SAY ---------------- appending show data
+---------------- appending show data
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+! combinations of /append and /clobber
+ 
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+ 
+SAY ---------------- Just show data, two show data/clobber commands in a row
+---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just grid of sst
+---------------- Just grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME      TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+use coads_climatology
+use levitus_climatology
+ 
+show data/clobber/outfile=a.txt 1
+ 
+SAY ---------------- Just dataset 1
+---------------- Just dataset 1
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show data/append/outfile=a.txt levitus_climatology
+ 
+SAY ---------------- appending datset 2 by name
+---------------- appending datset 2 by name
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+     currently SET data sets:
+    2> ./levitus_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                      1:160     1:90      1:1       ...       ...       ...
+ 
+show grid/clobber/outfile=a.txt PS3*
+ 
+SAY ---------------- only showing all grids starting with PS3
+---------------- only showing all grids starting with PS3
+sp cat a.txt
+      PS3DT
+      PS3DU
+      PS3DW
+ 
+SAY ---------------- tests sending output of vtree to a file
+---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+! bn_tree_outfile.jnl
+ 
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+ 
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+ 
+!
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+   A = 1
+ 
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+   C = SIN(B)
+     B = 1
+ 
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+ 
+! ================
+ 
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1
+   FV1[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+a is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   A = FV1 + FVX
+     FV1
+     FVX
+   in default dataset my_file_vars
+   A = FV1 + FVX
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset other_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1[d=my_file_var]
+     FV1
+********************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: V[D=NOEXIST]
+************************
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   V[D=NOEXIST]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: NOVAR[D=NODSET]
+************************
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   NOVAR[D=NODSET]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+RESHAPE(fvx,fvz) is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FVX
+   FVZ
+   FVX[d=my_file_vars]
+   FVZ[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+     FV1
+       FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+   NOEXIST  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   NOEXIST[GZ(DEPTH)=ZPTS]  (unknown variable)
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+   NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]  (unknown variable)
+   UNKNOWN_AUX  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+     FV1[d=my_file_var]
+     FV1[d=other_file_var]
+     FV1[d=another_file_var]
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+ 
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fvx is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=my_file_var]
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=other_file_var]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=another_file_var]
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+ 
+   FVX[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ILLEGAL RECURSIVE VARIABLES: P1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S3  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: S1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S1  (unknown variable)
+   S3  (unknown variable)
+   in default dataset my_file_vars
+   FV = FV1 + FV1 + FV1
+   in default dataset MY_UVAR_AGG
+   FV = FV1 + FV1 + FV1
+     FV1   (aggregate variable)
+   in default dataset other_file_vars
+   UV = FVX + FVX + FVX
+     FVX = FV1 + X[GX=FVX[D=1],I=1:3]
+   in default dataset MY_UVAR_AGG
+   UV = FVX + FVX + FVX
+     FVX   (aggregate variable)
+       FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+***************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v2 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+         FV1[d=my_file_var]
+         FV1[d=other_file_var]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v3 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+       FV1[d=my_file_var]
+       FV1[d=other_file_var]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: F
+************************
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+       FV1[d=my_file_var]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   FVX[d=my_file_var]
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   F  (unknown variable)
+   FV1[d=my_file_vars]
+   NOEXIST  (unknown variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN GRID: A[G=NOEXIST]
+************************
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   A[G=NOEXIST]  (unknown grid)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[X=45S]
+************************
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   A[X=45S]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[I=1,,J=2]
+************************
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   A[I=1,,J=2]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[P=1]
+************************
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   A[P=1]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+f is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   A = FVZ.LONG_NAME[D=1]
+   in default dataset MY_UVAR_AGG
+   A = ..HISTORY[D=1]
+ 
+ 
+*** Running test: bn_date1900_array.jnl
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
+ 
+ 
+sh func/details date1900
+DATE1900(formatted date)
+    Convert date strings into Julian days since 1-Jan-1900
+        Axes of result:
+          X: inherited from argument(s)
+          Y: NORMAL (no axis)
+          Z: NORMAL (no axis)
+          T: NORMAL (no axis)
+          E: NORMAL (no axis)
+          F: NORMAL (no axis)
+    formatted date: dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00") (none) (STRING)
+        Influence on output axes:
+          X: passed to result grid
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+             VARIABLE : DATE1900("01-jan-2001")
+          36890.
+ 
+ 
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+             VARIABLE : DATE1900(DATESTRINGS)
+             SUBSET   : 3 points (X)
+ 1   / 1:  36890.
+ 2   / 2:  36891.
+ 3   / 3:  37465.
+ 
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+             VARIABLE : T
+                        axis TAXIS
+             SUBSET   : 3 points (TIME)
+ 01-JAN-2001 00 / 1:  36890.
+ 02-JAN-2001 00 / 2:  36891.
+ 30-JUL-2002 00 / 3:  37465.
+ 
+*** Running test: bn_spawn_size.jnl
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not
+! the nominalabstract axis length.
+ 
+! ticket 981
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+             VARIABLE : {SPAWN:"ls *cdf*.jnl"}
+             SUBSET   : 8 points (X)
+ 1   / 1:"bn_cdf_errmsg.jnl"      
+ 2   / 2:"bn_cdf.jnl"             
+ 3   / 3:"bn_cdf_keepax.jnl"      
+ 4   / 4:"bn_netcdf4.jnl"         
+ 5   / 5:"err490_cdf_childax.jnl" 
+ 6   / 6:"err491_cdf_childax.jnl" 
+ 7   / 7:"err65_read_epic_cdf.jnl"
+ 8   / 8:"err667_5d_netcdf.jnl"   
+say `files,return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+ !-> MESSAGE/CONTINUE 36
+36
+ 
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+ !-> MESSAGE/CONTINUE 3
+3
+list {spawn:"ls xml*.jnl"}
+             VARIABLE : {SPAWN:"ls xml*.jnl"}
+             SUBSET   : 3 points (X)
+ 1   / 1:"xml_header_script.jnl"
+ 2   / 2:"xml_use_coads.jnl"    
+ 3   / 3:"xml_use_numstring.jnl"
+ 
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
+ 
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+ !-> MESSAGE/CONTINUE 834
+834
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+*** Running test: bn_polygon_log.jnl
+! bn_polygon_log.jnl
+! polygon plots on a log axis need tests
+ 
+let xsqr = YSEQUENCE({0,.1,.1,0})
+let ysqr = YSEQUENCE({0,0,.1,.1})
+let xpts = cos(x/10) + 2
+let ypts = x/10+1
+ 
+! Polygon plot
+ 
+set view ul
+polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10
+ 
+! Poly/vlog and /hlog
+! (known bug: Whats up with the colorbar labels?)
+set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10
+set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10
+set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10
+ 
+! These are errors - log of negative values on axis
+ 
+set mode ignore
+ 
+let ybad = x/10 - 1
+let xbad = cos(x/10) + 0.8
+ 
+can view
+polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10
+ 
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+ 
+set mode/last ignore
 *** Running test: bn_all_ef.jnl
 SET MODE VERIFY
 ! bn_all_ef.jnl
@@ -75624,22 +77756,22 @@ exit
  
 exit/command
 *** Running test: bn_startupfile.jnl
- Current size of FERRET memory cache: 31 MegaWords  (1 word = 4 bytes)
-PPL$XPIXEL = "691"
-PPL$YPIXEL = "518"
+ Current size of FERRET memory cache: 31 MegaWords  (1 word = 8 bytes)
+PPL$XPIXEL = "656"
+PPL$YPIXEL = "492"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5 64-bit"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.32-504.el6.x86_64 64-bit"
 FERRET_PRECISION = "double"
-NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
+NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 10:43:06 $"
 FERRET_MEMORY = "31"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "15:38"
-SESSION_PID = "27420"
-DELTA_CPU = "0.026995"
-CLOCK_SECS = "0.096"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "15:38:52"
+SESSION_DATE = "30-Oct-14"
+SESSION_TIME = "11:20"
+SESSION_PID = "11944"
+DELTA_CPU = "0.05399"
+CLOCK_SECS = "1.164"
+CURRENT_DATE = "30-Oct-14"
+CURRENT_TIME = "11:20:04"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "Ferret"
 LAST_GO_FILE = "./bn_startupfile.jnl"
@@ -75661,7 +77793,7 @@ PPL$VIEW_X = "0.000"
 PPL$VIEW_Y = "0.000"
 PPL$VIEW_Z = "0.000"
 PPL$COMMAND_FILE = "$$MEMBUF$$"
-WIN_TITLE = "31-Mar-14:15:38"
+WIN_TITLE = "30-Oct-14:11:20"
 VP_WIDTH = "10.2"
 VP_HEIGHT = "8.8"
 VP_SCALE = "1"
@@ -75714,4 +77846,4 @@ VP_YHI = "1"
  TAUY     MERIDIONAL WIND STRESS          69:71      1:100     ...       1:3       ...       ...
  PSI      STREAM FUNCTION                 69:73      1:100     ...       1:3       ...       ...
  
-Ended at Mon Mar 31 15:38:52 PDT 2014
+Ended at Thu Oct 30 11:20:08 PDT 2014
diff --git a/bench/test_results/ferret_run_tests_ncdump b/bench/test_results/ferret_run_tests_ncdump
index a44de1d..df2bf17 100644
--- a/bench/test_results/ferret_run_tests_ncdump
+++ b/bench/test_results/ferret_run_tests_ncdump
@@ -50,8 +50,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969 ;
@@ -75,8 +75,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969, 50757974 ;
@@ -112,8 +112,8 @@ variables:
 		B:long_name = "\"one line of text\"" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -151,8 +151,8 @@ variables:
 		D:history = "From test_string" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  GFP3 = "" ;
@@ -186,8 +186,8 @@ variables:
 		B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_4 = 1, 2, 3, 4 ;
@@ -256,8 +256,8 @@ variables:
 		V:long_name = "T[GT=MONTH_IRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 
@@ -313,8 +313,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -370,8 +370,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -425,8 +425,8 @@ variables:
 		T2:long_name = "Z[GZ=ZIRR]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  ZIRR = 0, 10, 40, 70 ;
@@ -473,8 +473,8 @@ variables:
 		V:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_83 = 181, 183, 185 ;
@@ -567,8 +567,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -637,8 +637,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -688,8 +688,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -779,8 +779,8 @@ variables:
 		A:long_name = "T[GT=TIME]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 0.5, 2 ;
@@ -806,8 +806,8 @@ variables:
 		X_:long_name_mod = "axis ABSTRACT" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ;
 data:
 
@@ -830,8 +830,8 @@ variables:
 		A:history = "From x" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title, longer than the previous limit of 80 characters.  Previously various buffers were set to 80, and storage in ds_title was also too short." ;
 data:
 
@@ -857,14 +857,14 @@ variables:
 		A:history = "From t0_cdc" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_tab_comma_multivar.jnl
 *** Running test: bn_element_functions.jnl
 *** Running test: bn_long_revision_num.jnl
 bn_long_revision_num.jnl --- history attribute
-		:history = "FERRET V6.9  31-Mar-14" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
 *** Running test: bn_window_title.jnl
 *** Running test: bn_last_error.jnl
 *** Running test: bn_deg_min.jnl
@@ -900,8 +900,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -973,8 +973,8 @@ variables:
 		VAR_B:long_name = "my strings" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -1017,8 +1017,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX105_105 = 229 ;
@@ -1059,8 +1059,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -1167,8 +1167,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 6 after CANCEL MODE upcase_output
 netcdf a {
@@ -1208,8 +1208,8 @@ variables:
 		Elev:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 7 outtput flags to control attribute output
 netcdf a {
@@ -1231,8 +1231,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1257,8 +1257,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1277,8 +1277,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1298,8 +1298,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1341,8 +1341,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 12 Check that settings hold for child axis.
 netcdf a {
@@ -1381,8 +1381,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 13 cancel output of attributes of the variable.
 netcdf a {
@@ -1419,40 +1419,40 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 14 attributes of data from ez data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX011 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float A1(XAX1_5) ;
+	double AX011(AX011) ;
+		AX011:point_spacing = "even" ;
+		AX011:axis = "X" ;
+	float A1(AX011) ;
 		A1:missing_value = -1.e+34f ;
 		A1:_FillValue = -1.e+34f ;
 		A1:long_name = "A1" ;
 		A1:three = 1.f, 2.f, 3.f ;
 		A1:history = "From EZ.DAT" ;
-	float A2(XAX1_5) ;
+	float A2(AX011) ;
 		A2:missing_value = -1.e+34f ;
 		A2:_FillValue = -1.e+34f ;
 		A2:long_name = "A2" ;
 		A2:history = "From EZ.DAT" ;
-	float A3(XAX1_5) ;
+	float A3(AX011) ;
 		A3:missing_value = -1.e+34f ;
 		A3:_FillValue = -1.e+34f ;
 		A3:long_name = "A3" ;
 		A3:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX011 = 1, 2, 3, 4, 5 ;
 
  A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -1463,29 +1463,29 @@ data:
 bn_attributes.jnl --- 15 attributes of data from delimited data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX008 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float V1(XAX1_5) ;
+	double AX008(AX008) ;
+		AX008:point_spacing = "even" ;
+		AX008:axis = "X" ;
+	float V1(AX008) ;
 		V1:missing_value = -1.e+34f ;
 		V1:_FillValue = -1.e+34f ;
 		V1:long_name = "V1" ;
 		V1:strval = "2" ;
 		V1:history = "From EZ.DAT" ;
-	float V4(XAX1_5) ;
+	float V4(AX008) ;
 		V4:missing_value = -1.e+34f ;
 		V4:_FillValue = -1.e+34f ;
 		V4:long_name = "V4" ;
 		V4:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX008 = 1, 2, 3, 4, 5 ;
 
  V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -1507,8 +1507,8 @@ variables:
 		A:four = "theory" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -1553,8 +1553,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:simulation = "K-Bay OAR3d model (200m)" ;
 		:start_date = "980105000000" ;
 		:option = 0 ;
@@ -1660,8 +1660,8 @@ variables:
 		TEMP:units = "deg. C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:dt_internal = 15. ;
 }
 bn_attributes.jnl --- 19 scale and offset attr.
@@ -1702,8 +1702,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XC = -135.50957036625, -135.496120344706, -135.482670323162, 
@@ -1785,8 +1785,8 @@ variables:
 		RIGUE:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  J = 2, 4, 6 ;
@@ -1822,8 +1822,8 @@ variables:
 		B:long_name = "hello" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  B = 1 ;
@@ -1862,8 +1862,8 @@ variables:
 		VWND:units = "M/S" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -1913,8 +1913,8 @@ variables:
 		T2:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -1972,8 +1972,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2017,8 +2017,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2060,8 +2060,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2095,8 +2095,8 @@ variables:
 		TEMP:units = "DEG C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2129,8 +2129,8 @@ variables:
 		TWO:history = "From levitus_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 27 attributes of  user-defined axes
 netcdf string4d {
@@ -2159,8 +2159,8 @@ variables:
 		AXY:long_name = "RESHAPE (A,RVAR)" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 28 Define a new global attribute
 bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var
@@ -2188,8 +2188,8 @@ variables:
 		BROILED:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 		:glob = "Global attribute" ;
 		:FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ;
 data:
@@ -2249,8 +2249,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2294,8 +2294,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_transforms.jnl
 *** Running test: bn_variance.jnl
@@ -2335,8 +2335,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2365,8 +2365,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2395,8 +2395,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2448,8 +2448,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2490,8 +2490,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2508,8 +2508,8 @@ variables:
 		V:long_name = "Y[GY=YAXIS]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_no_valid_on_plot.jnl
 *** Running test: bn_median.jnl
@@ -2517,12 +2517,12 @@ variables:
 err611_set_var_ez.jnl --- 
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX002 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_ASC(XAX1_3) ;
+	double AX002(AX002) ;
+		AX002:point_spacing = "even" ;
+		AX002:axis = "X" ;
+	float MY_ASC(AX002) ;
 		MY_ASC:missing_value = 3.f ;
 		MY_ASC:_FillValue = 3.f ;
 		MY_ASC:long_name = "chlorophyll" ;
@@ -2530,17 +2530,17 @@ variables:
 		MY_ASC:history = "From dat.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX002 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_UNF(XAX1_3) ;
+	double AX002(AX002) ;
+		AX002:point_spacing = "even" ;
+		AX002:axis = "X" ;
+	float MY_UNF(AX002) ;
 		MY_UNF:missing_value = 5.f ;
 		MY_UNF:_FillValue = 5.f ;
 		MY_UNF:long_name = "Some Unformatted input" ;
@@ -2548,8 +2548,8 @@ variables:
 		MY_UNF:history = "From unf.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- SET VAR/OUTTYPE for user variable
 netcdf a {
@@ -2565,8 +2565,8 @@ variables:
 		A:long_name = "{1.1,2.2,3.3}" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -2586,8 +2586,8 @@ variables:
 		A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
@@ -2605,50 +2605,51 @@ data:
 netcdf a {
 dimensions:
 	XAX1_10 = 10 ;
-	TDAY = UNLIMITED ; // (31 currently)
-	LON1_5 = 5 ;
-	LAT1_5 = 5 ;
+	tday = UNLIMITED ; // (31 currently)
+	lon1_5 = 5 ;
+	lat1_5 = 5 ;
 	bnds = 2 ;
-	ZT = 10 ;
-	TIME1478 = 3 ;
+	zt = 10 ;
+	time1478 = 3 ;
 variables:
 	double XAX1_10(XAX1_10) ;
 		XAX1_10:point_spacing = "even" ;
 		XAX1_10:axis = "X" ;
-	double TDAY(TDAY) ;
-		TDAY:units = "days since 1998-12-31 00:00:00" ;
-		TDAY:axis = "T" ;
-		TDAY:calendar = "GREGORIAN" ;
-		TDAY:time_origin = "31-DEC-1998" ;
-		TDAY:standard_name = "time" ;
-	double MyUpperLowerCaseVar(TDAY, XAX1_10) ;
+	double tday(tday) ;
+		tday:units = "days since 1998-12-31 00:00:00" ;
+		tday:axis = "T" ;
+		tday:calendar = "GREGORIAN" ;
+		tday:time_origin = "31-DEC-1998" ;
+		tday:standard_name = "time" ;
+	double MyUpperLowerCaseVar(tday, XAX1_10) ;
 		MyUpperLowerCaseVar:missing_value = -1.e+34 ;
 		MyUpperLowerCaseVar:_FillValue = -1.e+34 ;
 		MyUpperLowerCaseVar:long_name = "X[X=1:10] + T[GT=TDAY]" ;
-	double LON1_5(LON1_5) ;
-		LON1_5:point_spacing = "even" ;
-		LON1_5:axis = "X" ;
-		LON1_5:standard_name = "longitude" ;
-	double LAT1_5(LAT1_5) ;
-		LAT1_5:point_spacing = "uneven" ;
-		LAT1_5:axis = "Y" ;
-		LAT1_5:standard_name = "latitude" ;
-		LAT1_5:bounds = "LAT1_5_bnds" ;
-	double LAT1_5_bnds(LAT1_5, bnds) ;
-	float ZT(ZT) ;
-		ZT:units = "meters" ;
-		ZT:positive = "down" ;
-		ZT:point_spacing = "uneven" ;
-		ZT:axis = "Z" ;
-		ZT:standard_name = "depth" ;
-		ZT:bounds = "ZT_bnds" ;
-	float ZT_bnds(ZT, bnds) ;
-	double TIME1478(TIME1478) ;
-		TIME1478:calendar = "NOLEAP" ;
-		TIME1478:point_spacing = "even" ;
-		TIME1478:axis = "T" ;
-		TIME1478:standard_name = "time" ;
-	double newvar(TIME1478, ZT, LAT1_5, LON1_5) ;
+	double lon1_5(lon1_5) ;
+		lon1_5:point_spacing = "even" ;
+		lon1_5:axis = "X" ;
+		lon1_5:standard_name = "longitude" ;
+	double lat1_5(lat1_5) ;
+		lat1_5:point_spacing = "uneven" ;
+		lat1_5:axis = "Y" ;
+		lat1_5:standard_name = "latitude" ;
+		lat1_5:bounds = "lat1_5_bnds" ;
+	double lat1_5_bnds(lat1_5, bnds) ;
+	float zt(zt) ;
+		zt:long_name = "zt" ;
+		zt:units = "meters" ;
+		zt:positive = "down" ;
+		zt:point_spacing = "uneven" ;
+		zt:axis = "Z" ;
+		zt:standard_name = "depth" ;
+		zt:bounds = "zt_bnds" ;
+	float zt_bnds(zt, bnds) ;
+	double time1478(time1478) ;
+		time1478:calendar = "NOLEAP" ;
+		time1478:axis = "T" ;
+		time1478:point_spacing = "even" ;
+		time1478:standard_name = "time" ;
+	double newvar(time1478, zt, lat1_5, lon1_5) ;
 		newvar:missing_value = -999. ;
 		newvar:_FillValue = -999. ;
 		newvar:long_name = "outgoing longwave radiation" ;
@@ -2656,8 +2657,8 @@ variables:
 		newvar:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_cdf_keepax.jnl
 *** Running test: bn_keep_axisnames.jnl
@@ -2685,8 +2686,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES
 netcdf a {
@@ -2712,8 +2713,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_key_label_minmax.jnl
 *** Running test: bn62_bug_fixes.jnl
@@ -2817,8 +2818,8 @@ variables:
 		ZUP:long_name = "Z[GZ=ZAXUP]" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:
 netcdf a {
@@ -2849,8 +2850,8 @@ variables:
 		Y_:long_name_mod = "axis YFIFTEEN" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since
 netcdf a {
@@ -2882,8 +2883,8 @@ variables:
 		XYTVAR:history = "From bn_strides" ;
 
 // global attributes:
-		:history = "FERRET V6.9  31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93  30-Oct-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_repeated_coords.jnl
 *** Running test: bn_xml_header.jnl
@@ -2922,5 +2923,15 @@ variables:
 *** Running test: bn_enter_exit_GO.jnl
 *** Running test: bn_stddev.jnl
 *** Running test: bn_set_axis_name.jnl
+*** Running test: bn691_bug_fixes.jnl
+*** Running test: bn_append_dsg.jnl
+*** Running test: bn_global_atts.jnl
+*** Running test: bn_conventions_history.jnl
+*** Running test: bn_center_key_labels.jnl
+*** Running test: bn_wgt_transform.jnl
+*** Running test: bn_show_outfile.jnl
+*** Running test: bn_date1900_array.jnl
+*** Running test: bn_spawn_size.jnl
+*** Running test: bn_polygon_log.jnl
 *** Running test: bn_all_ef.jnl
 *** Running test: bn_startupfile.jnl
diff --git a/bench/test_results/flowlines.pdf b/bench/test_results/flowlines.pdf
index 51cce2d..08390ac 100644
Binary files a/bench/test_results/flowlines.pdf and b/bench/test_results/flowlines.pdf differ
diff --git a/bench/test_results/graticules.pdf b/bench/test_results/graticules.pdf
index e17ef73..a530c0d 100644
Binary files a/bench/test_results/graticules.pdf and b/bench/test_results/graticules.pdf differ
diff --git a/bench/test_results/linecolors.pdf b/bench/test_results/linecolors.pdf
index 244a239..6fcb739 100644
Binary files a/bench/test_results/linecolors.pdf and b/bench/test_results/linecolors.pdf differ
diff --git a/bench/test_results/multi_line_labels.pdf b/bench/test_results/multi_line_labels.pdf
index e61391a..c4ef234 100644
Binary files a/bench/test_results/multi_line_labels.pdf and b/bench/test_results/multi_line_labels.pdf differ
diff --git a/bench/test_results/polygon_plot.pdf b/bench/test_results/polygon_plot.pdf
index cd2547a..77b6d13 100644
Binary files a/bench/test_results/polygon_plot.pdf and b/bench/test_results/polygon_plot.pdf differ
diff --git a/bench/test_results/pyferret_run_tests_err b/bench/test_results/pyferret_run_tests_err
index 417c5e3..3f97d80 100644
--- a/bench/test_results/pyferret_run_tests_err
+++ b/bench/test_results/pyferret_run_tests_err
@@ -1,5 +1,5 @@
 Using FERRET /home/users/ksmith/PyFerret/bin/pyferret
-lrwxrwxrwx 1 ksmith tmap 11 Mar 31 17:25 /home/users/ksmith/PyFerret/bin/pyferret -> pyferret.sh
+lrwxrwxrwx 1 ksmith tmap 11 Nov  5 16:36 /home/users/ksmith/PyFerret/bin/pyferret -> pyferret.sh
 Using external functions from /home/users/ksmith/PyFerret/ext_func/libs
 Benchmark run by ksmith
 Note: RUN_TESTS.sh test results for debug build of PyFerret on RHEL5-64
@@ -216,6 +216,16 @@ Benchmark scripts that will be run:
    bn_enter_exit_GO.jnl
    bn_stddev.jnl
    bn_set_axis_name.jnl
+   bn691_bug_fixes.jnl
+   bn_append_dsg.jnl
+   bn_global_atts.jnl
+   bn_conventions_history.jnl
+   bn_center_key_labels.jnl
+   bn_wgt_transform.jnl
+   bn_show_outfile.jnl
+   bn_date1900_array.jnl
+   bn_spawn_size.jnl
+   bn_polygon_log.jnl
    bn_all_ef.jnl
    bn_startupfile.jnl
 ****** Restricting Ferret paths to bench directory ******
@@ -232,7 +242,7 @@ FER_GRIDS=.
 FER_LIBS=/home/users/ksmith/PyFerret/lib
 FER_PALETTE=. /home/users/ksmith/PyFerret/ppl
 FER_WEB_BROWSER=firefox
-Beginning at Mon Mar 31 17:26:16 PDT 2014
+Beginning at Wed Nov  5 16:37:14 PST 2014
 *** Running test: bn_syntax.jnl
  Cached data cleared from memory
  *** NOTE: the use of "SET MODE METAFILE" is deprecated;
@@ -258,7 +268,6 @@ Beginning at Mon Mar 31 17:26:16 PDT 2014
  *** NOTE: the use of "SET MODE METAFILE" is deprecated;
  *** NOTE: instead use "FRAME /FILE=... /FORMAT=..."
         SET EXPRESSION has not been given or implied
-        SET EXPRESSION has not been given or implied
  **ERROR: unknown command qualifier: help
 MESSAGE/CONTINUE /help
  **ERROR: unknown command: that
@@ -826,9 +835,10 @@ list v2-and-minus[i=5:15 at ddc]
  Cached data cleared from memory
  LISTing to file permutedBinaryTest.dat
  LISTing to file junk.dat
- **ERROR: request exceeds memory setting: A negative number of words were requested.
+ **ERROR: request exceeds memory setting: 24000 Mwords were requested.
 load num
- *** NOTE: The current grid is most likely too large
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
 Replacing definition of axis YAX
 Replacing definition of axis ZAX
 Replacing definition of axis TAX
@@ -3055,6 +3065,9 @@ Replacing definition of axis TAXIS
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page.
+ *** NOTE: ./err672_vert_axislabel.jnl
+ *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page.
  *** NOTE: Adjusting Y-axis label size from 0.100 to 0.030, to avoid running off page.
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
@@ -3066,6 +3079,7 @@ Replacing definition of axis TAXIS
  *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis RLATU79_961_9
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
+ *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page.
  PERMANENT data cleared from memory
  TEMPORARY data cleared from memory
  PERMANENT data cleared from memory
@@ -3409,6 +3423,14 @@ plot/i=1:100/ribbon/COLOR sin(i/6),0.6*sin(i/7)
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
  *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
  **ERROR: illegal limits: X axis limits don't match variable def'n: A
           Are you giving explicit limits when SET REGION would suffice ?
 list f
@@ -3495,10 +3517,14 @@ show att temp.noexist[d=levitus_climatology]
  TEMPORARY data cleared from memory
  **ERROR: invalid command: illegal new name.  Variable b already defined
 set var/name=b a
+ **ERROR: invalid command: illegal new name.  Variable b already defined
+set var/name=b a
  **ERROR: invalid command: illegal new name.  Variable temp exists in dataset
 set var/name=temp salt
  **ERROR: invalid command: illegal new name.  Variable psi exists in dataset
 set var/name=psi myvar
+ **ERROR: invalid command: illegal new name.  Variable diff already defined
+set var/name=diff w
 *** Running test: bn_bad_axis_bounds.jnl
  Cached data cleared from memory
  *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another
@@ -3522,6 +3548,149 @@ set axis/name x_in_meters
 set axis/name=45 x_in_meters
  **ERROR: invalid command: illegal new name given for axis .fr
 set axis/name=.fr x_in_meters
+*** Running test: bn691_bug_fixes.jnl
+ Cached data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING
+list tax_datestring (tt[L=3], tt, 5)
+ **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC
+ *** NOTE: Substituting coordinate midpoints
+ *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR
+ *** NOTE: Substituting coordinate midpoints
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: command syntax: must be a constant COS(1)
+list {cos(1), sin(0)}
+ **ERROR: command syntax: must be a constant 0-180
+list {0-180, 180}
+ **ERROR: command syntax: must be a constant  1./5.
+list {0.1, 0.2, 1./5.}
+ **ERROR: command syntax: must be a constant 5*3+1
+list {5*3+1, 2+3}
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file tval.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file out.xml
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+Replacing definition of axis XAXIS
+ **ERROR: request exceeds memory setting: 2369 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+Replacing definition of axis LONGTIME
+ **ERROR: request exceeds memory setting: 4735 Mwords were requested.
+load bigvar
+ *** NOTE: You can use SET MEMORY/SIZE=xxx to increase memory.
+ *** NOTE: The "Memory use" section of the FERRET Users Guide has further tips.
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2]
+ LISTing to file aa.nc
+ LISTing to file bb.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: A
+list a
+ **ERROR: variable unknown or not in data set: B
+list b
+ **ERROR: variable unknown or not in data set: A
+shade a
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ LISTing to file a.nc
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+ PERMANENT data cleared from memory
+ TEMPORARY data cleared from memory
+*** Running test: bn_append_dsg.jnl
+ Cached data cleared from memory
+rm: cannot remove `test_save_dsg.nc': No such file or directory
+*** Running test: bn_global_atts.jnl
+ Cached data cleared from memory
+ LISTing to file anew_global.nc
+*** Running test: bn_conventions_history.jnl
+ Cached data cleared from memory
+ LISTing to file conventions_history.nc
+*** Running test: bn_center_key_labels.jnl
+ Cached data cleared from memory
+*** Running test: bn_wgt_transform.jnl
+ Cached data cleared from memory
+*** Running test: bn_show_outfile.jnl
+ Cached data cleared from memory
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVX
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ *** NOTE: Exclude variable from aggregate. Does not appear in all member datasets: FVZ
+ **ERROR: unknown defining grid: G=NOEXIST
+list b
+ **ERROR: command syntax: 45S
+list c
+ **ERROR: command syntax: ,
+list d
+ **ERROR: command syntax: P=1
+list e
+ **ERROR: illegal limits: X axis limits don't match variable def'n: A
+          Are you giving explicit limits when SET REGION would suffice ?
+list f
+*** Running test: bn_date1900_array.jnl
+ Cached data cleared from memory
+*** Running test: bn_spawn_size.jnl
+ Cached data cleared from memory
+*** Running test: bn_polygon_log.jnl
+ Cached data cleared from memory
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.850
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+ **ERROR: value out of legal range: X coordinates on log axis negative or too small : -0.689E-02
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
 *** Running test: bn_all_ef.jnl
  Cached data cleared from memory
  PERMANENT data cleared from memory
@@ -3543,4 +3712,4 @@ LOAD/TEMPORARY vflag
  Cached data cleared from memory
  *** NOTE: the use of "SET MODE METAFILE" is deprecated;
  *** NOTE: instead use "FRAME /FILE=... /FORMAT=..."
-Ended at Mon Mar 31 17:30:10 PDT 2014
+Ended at Wed Nov  5 16:42:11 PST 2014
diff --git a/bench/test_results/pyferret_run_tests_log b/bench/test_results/pyferret_run_tests_log
index 3cb29ca..8a7e0f3 100644
--- a/bench/test_results/pyferret_run_tests_log
+++ b/bench/test_results/pyferret_run_tests_log
@@ -1,5 +1,5 @@
 Using FERRET /home/users/ksmith/PyFerret/bin/pyferret
-lrwxrwxrwx 1 ksmith tmap 11 Mar 31 17:25 /home/users/ksmith/PyFerret/bin/pyferret -> pyferret.sh
+lrwxrwxrwx 1 ksmith tmap 11 Nov  5 16:36 /home/users/ksmith/PyFerret/bin/pyferret -> pyferret.sh
 Using external functions from /home/users/ksmith/PyFerret/ext_func/libs
 Benchmark run by ksmith
 Note: RUN_TESTS.sh test results for debug build of PyFerret on RHEL5-64
@@ -216,6 +216,16 @@ Benchmark scripts that will be run:
    bn_enter_exit_GO.jnl
    bn_stddev.jnl
    bn_set_axis_name.jnl
+   bn691_bug_fixes.jnl
+   bn_append_dsg.jnl
+   bn_global_atts.jnl
+   bn_conventions_history.jnl
+   bn_center_key_labels.jnl
+   bn_wgt_transform.jnl
+   bn_show_outfile.jnl
+   bn_date1900_array.jnl
+   bn_spawn_size.jnl
+   bn_polygon_log.jnl
    bn_all_ef.jnl
    bn_startupfile.jnl
 ****** Restricting Ferret paths to bench directory ******
@@ -232,7 +242,7 @@ FER_GRIDS=.
 FER_LIBS=/home/users/ksmith/PyFerret/lib
 FER_PALETTE=. /home/users/ksmith/PyFerret/ppl
 FER_WEB_BROWSER=firefox
-Beginning at Mon Mar 31 17:26:16 PDT 2014
+Beginning at Wed Nov  5 16:37:14 PST 2014
 *** Running test: bn_syntax.jnl
 ! bn401_syntax.JNL
 ! - test syntax interpretation of Program FERRET
@@ -374,9 +384,9 @@ SHOW DATA/FULL
     1> ./snoopy.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:2       ...       ...       ...       ...       ...
+               on grid (G008) with -1.E+34 for missing data
+             X=-0.5:1.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -386,7 +396,7 @@ SHOW DATA
      currently SET data sets:
     1> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:2       ...       ...       ...       ...       ...
  
 SET MODE IGNORE_ERROR
 SET DATA/EZ/VAR="P,Q" 1
@@ -642,7 +652,7 @@ show mode journal
       JOURNAL          SET         newjournal.jnl
 set mode journal ferret.jnl
 ppl list plot
-         WIDTH=   10.50  HEIGHT=    8.50  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= ferret.png                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -654,7 +664,7 @@ ppl list plot
 ppl listsym
 cancel mode ppllist
 ppl list plot
-         WIDTH=   10.50  HEIGHT=    8.50  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= ferret.png                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -712,6 +722,8 @@ can mode metafile
  
 ! SET - SHOW - CANCEL EXPRESSION
 SHOW EXPRESSION
+        current output expression(s):
+        X[GX=1:0:1]
 CANCEL EXPRESSION
 SHOW EXPRESSION
 SET EXPRESSION i+5,i-j
@@ -910,19 +922,19 @@ SHOW VARIABLES
  
 ! SHOW MEMORY , LOAD
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/TEMPORARY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded without /PERMANENT:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
   105  /125W          50  /1.7N           1  /10             5  /13-SEP-1982  ...  / ...         ...  / ...
  
 SHOW MEMORY/PERMANENT
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 data loaded with /PERMANENT:
 SHOW MEMORY/ALL
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 all data in memory:
  SALT[D=gt4d011]                   X     mr:3  blk1:1  nblk:1
   101  /130W          50  /1.3N           1  /0              5  /07-SEP-1982  ...  / ...         ...  / ...
@@ -932,9 +944,9 @@ all data in memory:
 LET A=i
 LOAD/PERM/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -948,9 +960,9 @@ SHOW MEMORY/FREE
             number of blocks used /PERM: 1
 LOAD/TEMPORARY/I=1:5 A
 SHOW MEMORY
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 SHOW MEMORY/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -1512,8 +1524,8 @@ let x1 = 0.012954
 let x2 = 7.5E-09
 let x3 = .1
 say >>`x1`<< ---  >>`x2`<< --- >>`x3`<<
- !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
->>0.012954<< ---  >>7.5E-09           << --- >>0.1<<
+ !-> MESSAGE/CONTINUE >>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
+>>0.012954<< ---  >>7.5E-09<< --- >>0.1<<
  
 ! must recognize "/" inside immediate mode exprn
 list/I=`6/2` i
@@ -1850,8 +1862,8 @@ show data
  
     2> ./snoopy.dat  (default)
  name     title                             I         J         K         L         M         N
- T4       test4                            1:20480   ...       ...       ...       ...       ...
- T3       test3                            1:20480   ...       ...       ...       ...       ...
+ T4       test4                            1:2       ...       ...       ...       ...       ...
+ T3       test3                            1:2       ...       ...       ...       ...       ...
  
 show data/full 1
      currently SET data sets:
@@ -9690,9 +9702,9 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ V1       V1                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9720,12 +9732,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
+ X2       X2                               1:5       ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:5.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9756,12 +9768,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 0
@@ -9800,12 +9812,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9838,12 +9850,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = FREE
  /SKIP = 2
@@ -9873,12 +9885,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0))
  /SKIP = 2
@@ -9911,12 +9923,12 @@ SHOW DATA/FULL
     1> ./EZ.DAT  (default)
  
  name     title                             I         J         K         L         M         N
- X1       X1                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- X2       X2                               1:20480   ...       ...       ...       ...       ...
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+ X1       X1                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
+ X2       X2                               1:15      ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:15.5  
  
  /FORMAT = (3(F14.0,F7.0)/)
  /SKIP = 1
@@ -10148,7 +10160,7 @@ set mode/last ignore
  
 ! notice the default window size is 10.2,width x 8.8,height
 ppl list plot
-         WIDTH=   10.50  HEIGHT=    8.50  TKTYPE= 4010  BAUD=  110
+         WIDTH=   10.20  HEIGHT=    8.80  TKTYPE=    0  BAUD=  110
          WINDOW= ON   BOX= OFF  CROSS= 0  PLTYPE=  3
          PLOT MODE=   A
          PLOT FILE= ferret.png                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [...]
@@ -10248,7 +10260,7 @@ plot/i=1:10/ylimits=1:40/nolabel i      ! note that /nolabel supresses XLAB
 plot/i=1:10/over/sym=2 i^1.1
 plot/i=1:10/over/sym=2/size=.12 i^1.2
 plot/i=1:10/over/sym=2/color=red i^1.3
-plot/i=1:10/over/thick/step i^1.4
+plot/i=1:10/over/thick/step/color=light_blue i^1.4
 plot/i=1:10/over/thick/color=blue/step=connected i^1.5
 plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6
  
@@ -10358,42 +10370,42 @@ go mp_hammer
 set grid sst
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Hammer
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Hammer
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Hammer
  
 set view tm
 go mp_sinusoidal
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Sinusoidal
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Sinusoidal
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Sinusoidal
  
 set view tr
 go mp_lambert_cyl
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Lambert Equal Area
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Lambert Equal Area
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Lambert Equal Area
  
 set view ml
 go mp_bonne
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Bonne
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Bonne
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Bonne
  
 set view mm
 go mp_mcbryde_fpp
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 McBryde Flat Polar
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 McBryde Flat Polar
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 McBryde Flat Polar
  
 set view mr
 go mp_polyconic
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Polyconic
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Polyconic
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Polyconic
  
 set view bl
 go mp_orthographic 300 45
@@ -10401,7 +10413,7 @@ go margins .2, .6, .2, .2
 let masked_sst = sst * mp_mask
 shade/nolab/nokey/noaxes masked_sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 OrthoGraphic
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 OrthoGraphic
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 OrthoGraphic
  
 set view bm
 set region/x=240:420
@@ -10409,7 +10421,7 @@ go mp_stereographic_eq
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Stereographic Equatorial
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Stereographic Equatorial
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Stereographic Equatorial
  
 set view br
 set region/x=0:360/y=00:90
@@ -10417,7 +10429,7 @@ go mp_stereographic_north
 go margins .2, .6, .2, .2
 shade/nolab/nokey/noaxes sst, x_page, y_page
 label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Stereographic North
- !-> PPL %LABEL/nouser 2.5255,-0.4,0,0,.20 Stereographic North
+ !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Stereographic North
  
 can region
 cancel viewport
@@ -10483,18 +10495,18 @@ show symbols/all
 PPL$XPIXEL = "0"
 PPL$YPIXEL = "0"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
-DELTA_CPU = "0.527919"
-CLOCK_SECS = "0.309"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:26:35"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
+DELTA_CPU = "0.547915"
+CLOCK_SECS = "0.381"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:37:40"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "PyFerret"
  
@@ -10512,18 +10524,18 @@ show symbol/all
 PPL$XPIXEL = "0"
 PPL$YPIXEL = "0"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
-DELTA_CPU = "0.001999"
-CLOCK_SECS = "0.311"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:26:35"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
+DELTA_CPU = "0.001"
+CLOCK_SECS = "0.383"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:37:40"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "PyFerret"
 S1 = "hello"
@@ -10533,9 +10545,9 @@ NUM = "3"
 T$DOLLAR = "hi"
 T_HELLO = "hi"
 show symbol s*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
 S1 = "hello"
 S2 = ""hello""
 S3 = "hello and goodbye"
@@ -10545,15 +10557,15 @@ S2 = ""hello""
 ! exercise CANCEL SYMBOL
 cancel symbol s2
 show symbol s*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
 S1 = "hello"
 S3 = "hello and goodbye"
 show symbol S*
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
 S1 = "hello"
 S3 = "hello and goodbye"
 cancel symbol s2	! already deleted
@@ -10678,21 +10690,21 @@ say ($delayed_eval)         ! translate symbol and then evaluate
 ! cleanup
 cancel symbols/all
 show symbols/all
-PPL$XPIXEL = "1008"
-PPL$YPIXEL = "816"
+PPL$XPIXEL = "979"
+PPL$YPIXEL = "844"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "25.6"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:26"
-SESSION_PID = "24491"
-DELTA_CPU = "0.022997"
-CLOCK_SECS = "0.333"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:26:35"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:37"
+SESSION_PID = "13035"
+DELTA_CPU = "0.026997"
+CLOCK_SECS = "0.41"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:37:41"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "PyFerret"
  
@@ -25230,7 +25242,7 @@ GO err491_spawn_quotes.jnl
  
 ! this should be a valid command
 SPAWN "date"
-Mon Mar 31 17:26:52 PDT 2014
+Wed Nov  5 16:38:03 PST 2014
  
 GO bn_reset
 cancel mode verify
@@ -25352,7 +25364,7 @@ list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50})
  1N   / 46:  29.14  28.92  28.33
  1S   / 45:  28.90  28.82  28.54
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -26143,7 +26155,7 @@ list a 			!   <-- CACHE HIT FAILS!!!
 set mode/last diagnostic
  
 SHOW MEM/FREE
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 12800
@@ -33412,6 +33424,10 @@ SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
     XPTS: X values of sample points
     YPTS: Y values of sample points
     TPTS: T values of sample points
+SAMPLE_FAST_I(V,Indices)
+    Fast 1D sample variable using set of indices
+    V: Variable to sample
+    Indices: List of indices at which to sample
  
 go bench_sorti.jnl
  
@@ -35076,35 +35092,37 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 4.74E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 4.74E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
 ! guidelines showing origin, axlen, white space
 def view /xlim=0.25:0.75/ylim=0.25:0.75/text=1/axes mid2
 set view mid2
 ppl origin 0,0
 define symbol xaxl `($PPL$WIDTH)/2`
- !-> define symbol xaxl 4.7235
+ !-> define symbol xaxl 4.737
 define symbol yaxl `($PPL$HEIGHT)/2`
- !-> define symbol yaxl 4.7235
-ppl axlen `1.375 + ($xaxl) + 1.375`,`1.375 + ($yaxl) + 1.375`
- !-> ppl axlen 7.4735,7.4735
-plot/vs/hlim=-1.375:`($xaxl)+1.375`:0.25/vlim=-1.375:`($yaxl)+1.375`:0.25/nolab/nolab {0,($xaxl)}, {0,($yaxl)}
- !-> plot/vs/hlim=-1.375:6.0985:0.25/vlim=-1.375:6.0985:0.25/nolab/nolab {0,4.7235}, {0,4.7235}
+ !-> define symbol yaxl 4.737
+ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4`
+ !-> ppl axlen 6.937,7.537
+plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/nolab {0,($xaxl)}, {0,($yaxl)}
+ !-> plot/vs/hlim=-1.2:5.737:0.2/vlim=-1.4:6.137:0.2/nolab/nolab {0,4.737}, {0,4.737}
+ 
+! pause
+set window/clear
  
 ! again with scale determined automatically
 ! make guide lines
-set window/clear
 set view allax
 plot/vs/line/hlim=0:1/vlim=0:1/nolab {0.5,0.5,,0,1},{0,1,,0.5,0.5}
 plot/vs/line/over/nolab {0.25,0.25,,0,1},{0,1,,0.25,0.25}
@@ -35120,38 +35138,39 @@ show view mid
  
  name             text    xlimits     ylimits    mode
  
- MID              0.75   0.25,0.75   0.25,0.75   axes
+ MID              0.72   0.25,0.75   0.25,0.75   axes
    current viewport is MID
 ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.45E+00 CSIZE= 1.00E-01
+         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.45E+00 CSIZE= 1.00E-01
+         LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
 ! guidelines showing origin, axlen, white space
 def view /xlim=0.25:0.75/ylim=0.25:0.75/text=1/axes mid2
 set view mid2
 ppl origin 0,0
 define symbol xaxl `($PPL$WIDTH)/2`
- !-> define symbol xaxl 4.7235
+ !-> define symbol xaxl 4.737
 define symbol yaxl `($PPL$HEIGHT)/2`
- !-> define symbol yaxl 4.7235
-ppl axlen `1.375 + ($xaxl) + 1.375`,`1.375 + ($yaxl) + 1.375`
- !-> ppl axlen 7.4735,7.4735
-plot/vs/hlim=-1.375:`($xaxl)+1.375`:0.25/vlim=-1.375:`($yaxl)+1.375`:0.25/nolab/line {0,($xaxl)}, {0,($yaxl)}
- !-> plot/vs/hlim=-1.375:6.0985:0.25/vlim=-1.375:6.0985:0.25/nolab/line {0,4.7235}, {0,4.7235}
+ !-> define symbol yaxl 4.737
+ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4`
+ !-> ppl axlen 6.937,7.537
+plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/line {0,($xaxl)}, {0,($yaxl)}
+ !-> plot/vs/hlim=-1.2:5.737:0.2/vlim=-1.4:6.137:0.2/nolab/line {0,4.737}, {0,4.737}
  
+! pause
 set wind/clear
  
 ! a full window plot
@@ -35161,9 +35180,10 @@ show view mid
  
  name             text    xlimits     ylimits    mode
  
- MID              0.75   0.25,0.75   0.25,0.75   axes
+ MID              0.72   0.25,0.75   0.25,0.75   axes
    current viewport is ALLAX
  
+! pause
 set wind/clear
  
 def view/axes/xlim=0:0.5/ylim=0:0.5/text=1 llax
@@ -35173,7 +35193,7 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          XORG= 0.00E+00  AUTO LABELLING
@@ -35181,7 +35201,7 @@ ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          YORG= 0.00E+00  AUTO LABELLING
@@ -35193,7 +35213,7 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          XORG= 0.00E+00  AUTO LABELLING
@@ -35201,10 +35221,10 @@ ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
 def view/axes/xlim=0.5:1/ylim=0:0.5/text=1 ulax
 set view ulax
@@ -35213,15 +35233,15 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          YORG= 0.00E+00  AUTO LABELLING
@@ -35233,28 +35253,29 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.72E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 4.74E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
-! again with viewport scaling determined automatically
+! pause
 set wind/clear
  
+! again with viewport scaling determined automatically
 def view/axes/xlim=0:0.5/ylim=0:0.5 llax
 show view llax
  
  name             text    xlimits     ylimits    mode
  
- LLAX             0.61   0.00,0.50   0.00,0.50   axes
+ LLAX             0.60   0.00,0.50   0.00,0.50   axes
    current viewport is URAX
 set view llax
 PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20)
@@ -35262,7 +35283,7 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          XORG= 0.00E+00  AUTO LABELLING
@@ -35270,7 +35291,7 @@ ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          YORG= 0.00E+00  AUTO LABELLING
@@ -35280,7 +35301,7 @@ show view lrax
  
  name             text    xlimits     ylimits    mode
  
- LRAX             0.61   0.00,0.50   0.50,1.00   axes
+ LRAX             0.60   0.00,0.50   0.50,1.00   axes
    current viewport is LLAX
 set view lrax
 PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20)
@@ -35288,7 +35309,7 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          XORG= 0.00E+00  AUTO LABELLING
@@ -35296,10 +35317,10 @@ ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
 def view/axes/xlim=0.5:1/ylim=0:0.5 ulax
 show view ulax
@@ -35314,15 +35335,15 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
          YORG= 0.00E+00  AUTO LABELLING
@@ -35340,20 +35361,22 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.03E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
  
+! pause
 cancel view
+ 
 go ptest
 ! Description: create a simple test line plot
  
@@ -35364,18 +35387,18 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.70E+00 CSIZE= 1.00E-01
+         LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 7.27E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  AUTO LABELLING
+         XORG= 1.20E+00  AUTO LABELLING
 ppl list yaxis
 
 
          YAXIS QUALITIES
-         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.70E+00 CSIZE= 1.00E-01
+         LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.67E+00 CSIZE= 1.00E-01
           LEFT AXIS= ON  RIGHT AXIS= ON 
          AUTO    NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         YORG= 1.38E+00  AUTO LABELLING
+         YORG= 1.40E+00  AUTO LABELLING
 *** Running test: bn_strings.jnl
 ! bn_strings.jnl
  
@@ -36087,56 +36110,56 @@ show data/var
     1> ./bn_delimited_read_1.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V2       V2                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V3       V3                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V4       V4                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V5       V5                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V6       V6                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V7       V7                               1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V8       V8                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V9       V9                               1:7       ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
+ V10      V10                              1:7       ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+               on grid (G001) with -1.E+34 for missing data
+             X=0.5:7.5  
  
  /DELIMITERS="\t,\,"
 list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
@@ -36235,11 +36258,11 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_1.dat  (default)
  name     title                             I         J         K         L         M         N
- A1       A1                               1:20480   ...       ...       ...       ...       ...
- A2       A2                               1:20480   ...       ...       ...       ...       ...
- A3       A3                               1:20480   ...       ...       ...       ...       ...
- A4       A4                               1:20480   ...       ...       ...       ...       ...
- A5       A5                               1:20480   ...       ...       ...       ...       ...
+ A1       A1                               1:7       ...       ...       ...       ...       ...
+ A2       A2                               1:7       ...       ...       ...       ...       ...
+ A3       A3                               1:7       ...       ...       ...       ...       ...
+ A4       A4                               1:7       ...       ...       ...       ...       ...
+ A5       A5                               1:7       ...       ...       ...       ...       ...
  
 list a1,a2,a3,a4,a5
              DATA SET: ./bn_delimited_read_1.dat
@@ -36347,18 +36370,18 @@ show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
  
 file/form=delimited/delimiter=" " bn_delimited_read_2.dat
 show data
      currently SET data sets:
     1> ./bn_delimited_read_2.dat  (default)
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:3       ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+ V2       V2                               1:3       ...       ...       ...       ...       ...
        (Time of day)
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+ V3       V3                               1:3       ...       ...       ...       ...       ...
        (all values missing)
  
 list v1,v2
@@ -36659,367 +36682,367 @@ show data/full
     1> ./bn_delimited_read_CO2.dat  (default)
  
  name     title                             I         J         K         L         M         N
- V1       V1                               1:20480   ...       ...       ...       ...       ...
+ V1       V1                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V2       V2                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V2       V2                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V3       V3                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V3       V3                               1:20      ...       ...       ...       ...       ...
             Data type = TEXT
             Conversion /TYPE=TEXT
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V4       V4                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V4       V4                               1:20      ...       ...       ...       ...       ...
        (Julian days since 1-Jan-1900)
             Data type = NUMERIC
             Conversion /TYPE=DATE
-             days on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V5       V5                               1:20480   ...       ...       ...       ...       ...
+             days on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V5       V5                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V6       V6                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V6       V6                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V7       V7                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V7       V7                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V8       V8                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V8       V8                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V9       V9                               1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V9       V9                               1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V10      V10                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V10      V10                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V11      V11                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V11      V11                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V12      V12                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V12      V12                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V13      V13                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V13      V13                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V14      V14                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V14      V14                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V15      V15                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V15      V15                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V16      V16                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V16      V16                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V17      V17                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V17      V17                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V18      V18                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V18      V18                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V19      V19                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V19      V19                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V20      V20                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V20      V20                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V21      V21                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V21      V21                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V22      V22                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V22      V22                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V23      V23                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V23      V23                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V24      V24                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V24      V24                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V25      V25                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V25      V25                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V26      V26                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V26      V26                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V27      V27                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V27      V27                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V28      V28                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V28      V28                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V29      V29                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V29      V29                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V30      V30                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V30      V30                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V31      V31                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V31      V31                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V32      V32                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V32      V32                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V33      V33                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V33      V33                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V34      V34                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V34      V34                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V35      V35                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V35      V35                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V36      V36                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V36      V36                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V37      V37                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V37      V37                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V38      V38                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V38      V38                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V39      V39                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V39      V39                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V40      V40                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V40      V40                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V41      V41                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V41      V41                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V42      V42                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V42      V42                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V43      V43                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V43      V43                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V44      V44                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V44      V44                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V45      V45                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V45      V45                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V46      V46                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V46      V46                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V47      V47                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V47      V47                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V48      V48                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V48      V48                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V49      V49                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V49      V49                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V50      V50                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V50      V50                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V51      V51                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V51      V51                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V52      V52                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V52      V52                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V53      V53                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V53      V53                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V54      V54                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V54      V54                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V55      V55                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V55      V55                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V56      V56                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V56      V56                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V57      V57                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V57      V57                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V58      V58                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V58      V58                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V59      V59                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V59      V59                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V60      V60                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V60      V60                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V61      V61                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V61      V61                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V62      V62                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V62      V62                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V63      V63                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V63      V63                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V64      V64                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V64      V64                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V65      V65                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V65      V65                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V66      V66                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V66      V66                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V67      V67                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V67      V67                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V68      V68                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V68      V68                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V69      V69                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V69      V69                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V70      V70                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V70      V70                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V71      V71                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V71      V71                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
- V72      V72                              1:20480   ...       ...       ...       ...       ...
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
+ V72      V72                              1:20      ...       ...       ...       ...       ...
             Data type = NUMERIC
             Conversion /TYPE=NUMERIC
-               on grid EZ with -1.E+34 for missing data
-             X=0.5:20480.5  
+               on grid (G002) with -1.E+34 for missing data
+             X=0.5:20.5  
  
  /DELIMITERS="\t,\,"
  /FORMAT = DELIMITED
@@ -37559,7 +37582,7 @@ set mode stupid
 set mode diag
 set mem/size=0.05
 show mem/free
- Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 0.2 MegaWords  (1 word = 8 bytes)
             total memory table slots: 500
             total memory blocks: 2000
             memory block size: 100
@@ -40371,7 +40394,7 @@ ppl plot
  
 set view lower
 ppl axlen `($ppl$xlen)-1`
- !-> ppl axlen 6.75
+ !-> ppl axlen 7
  
 plot/i=1:100/axes=1,0,0,1/set/title="shortened the x axis to make space" i*cos(i/8)
 ppl xlab "a multi line x label<NL>here is line two<NL>here is line three<NL>here is line four"
@@ -41038,12 +41061,12 @@ set region/x=130:290/y=-45:45
 shade/title="shift shakey left and up"/set temp[l=1]
  
 let x1 = `($ppl$xorg)+($ppl$xlen)`
- !-> DEFINE VARIABLE x1 = 9.125
+ !-> DEFINE VARIABLE x1 = 9.2
 let y1 = `($ppl$yorg)+.4`
- !-> DEFINE VARIABLE y1 = 1.775
+ !-> DEFINE VARIABLE y1 = 1.8
  
 ppl shakey ,,.12,,,,`x1`,,`y1`
- !-> ppl shakey ,,.12,,,,9.125,,1.775
+ !-> ppl shakey ,,.12,,,,9.2,,1.8
 ppl shade
 ppl list shakey
 
@@ -41052,17 +41075,17 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         9.13     9.52     1.77     7.53
+         9.20     9.49     1.80     7.80
  
 shade/title="set only x2,y2"/set temp[l=1]
  
 let x2 = `($ppl$xorg)+($ppl$xlen)`
- !-> DEFINE VARIABLE x2 = 9.125
+ !-> DEFINE VARIABLE x2 = 9.2
 let y2 = `($ppl$yorg)+($ppl$ylen) - .4`
- !-> DEFINE VARIABLE y2 = 6.725
+ !-> DEFINE VARIABLE y2 = 7
  
 ppl shakey ,,.12,,,,,`x2`,,`y2`
- !-> ppl shakey ,,.12,,,,,9.125,,6.725
+ !-> ppl shakey ,,.12,,,,,9.2,,7
 ppl shade
 ppl list shakey
 
@@ -41071,7 +41094,7 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         8.73     9.13     0.98     6.72
+         8.91     9.20     1.00     7.00
  
  
 ! resetting location of horizontal shade keys
@@ -41079,14 +41102,14 @@ ppl list shakey
 shade/title="shakey labels above it"/set temp[l=1]
  
 let x1 = `($ppl$xorg)+0.1`
- !-> DEFINE VARIABLE x1 = 1.475
+ !-> DEFINE VARIABLE x1 = 1.3
 let y1 = `($ppl$yorg)+($ppl$ylen)+0.1`
- !-> DEFINE VARIABLE y1 = 7.225
+ !-> DEFINE VARIABLE y1 = 7.5
 let y2 = `($ppl$yorg)+($ppl$ylen)+0.5`
- !-> DEFINE VARIABLE y2 = 7.625
+ !-> DEFINE VARIABLE y2 = 7.9
  
 ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2`
- !-> ppl shakey ,0,-.12,2,,,1.475,,7.225,7.625
+ !-> ppl shakey ,0,-.12,2,,,1.3,,7.5,7.9
 go unlabel 4
 go unlabel 5
 ppl shade
@@ -41097,18 +41120,18 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         1.48     9.23     7.22     7.63
+         1.30     9.30     7.50     7.90
  
  
 let x1 = `($ppl$xorg)+1`
- !-> DEFINE VARIABLE x1 = 2.375
+ !-> DEFINE VARIABLE x1 = 2.2
 let x2 = `($ppl$xorg)+($ppl$xlen)-1`
- !-> DEFINE VARIABLE x2 = 8.125
+ !-> DEFINE VARIABLE x2 = 8.2
 let y1 = `($ppl$yorg)`
- !-> DEFINE VARIABLE y1 = 1.375
+ !-> DEFINE VARIABLE y1 = 1.4
 shade/title="shorter, at bottom"/set temp[l=1]
 ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1`
- !-> ppl shakey ,0,-.12,3,,,2.375,8.125,1.375
+ !-> ppl shakey ,0,-.12,3,,,2.2,8.2,1.4
 ppl shade
 ppl list shakey
 
@@ -41117,17 +41140,17 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         2.38     8.13     1.38     1.46
+         2.20     8.20     1.40     1.49
  
 shade/title="on left, labelled on left"/set temp[l=1]
 ppl axlabp, 1,1
  
 let x1 = `($ppl$xorg)`  - .5
- !-> DEFINE VARIABLE x1 = 1.375  - .5
+ !-> DEFINE VARIABLE x1 = 1.2  - .5
 let x2 = `($ppl$xorg)`  - 0.1
- !-> DEFINE VARIABLE x2 = 1.375  - 0.1
+ !-> DEFINE VARIABLE x2 = 1.2  - 0.1
 ppl shakey ,1,-.1,2,,,`x1`,`x2`
- !-> ppl shakey ,1,-.1,2,,,0.875,1.275
+ !-> ppl shakey ,1,-.1,2,,,0.7,1.1
 ppl shade
  
 ppl axlabp, -1, -1
@@ -41135,10 +41158,10 @@ ppl axlabp, -1, -1
 set view upper
 ppl window off
 let y1 = -1* `($ppl$yorg)`
- !-> DEFINE VARIABLE y1 = -1* 1.375
+ !-> DEFINE VARIABLE y1 = -1* 1.4
 shade/title="In viewport, shakey located anywhere on page"/set temp[l=1]
 ppl shakey ,0,-.1,2,,,,,`y1`
- !-> ppl shakey ,0,-.1,2,,,,,-1.375
+ !-> ppl shakey ,0,-.1,2,,,,,-1.4
 ppl shade
 ppl list shakey
 
@@ -41147,7 +41170,7 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         1.38     9.13    -1.38    -1.29
+         1.20     9.20    -1.40    -1.31
 *** Running test: bn_eof_4d.jnl
 ! bn_eof_4d.jnl
 ! test EOFs on XYZT grids
@@ -44739,7 +44762,7 @@ ppl list shakey
 
          DEFAULT KEY POSITIONING
          X LO     X HI     Y LO     Y HI
-         9.40     9.80     1.38     7.13
+         9.40     9.69     1.40     7.40
  
 fill/lev=c {-1.1,1.1}*ysequence({1,1})
 ppl list shakey
@@ -44750,7 +44773,7 @@ ppl list shakey
 
          DEFAULT KEY POSITIONING
          X LO     X HI     Y LO     Y HI
-         9.40     9.80     1.38     7.13
+         9.40     9.69     1.40     7.40
  
  
 ! At lon = 0, we used to have an E; remove this.
@@ -46033,17 +46056,17 @@ set viewport vp_1
  
 fill/set/L=2 sst
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl fill
  
 fill/set/L=2 sst* 10000
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl fill
  
 fill/set/L=2 sst/ 10000
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl fill
  
 !
@@ -46054,17 +46077,17 @@ set viewport vp_1
  
 shade/set/L=2 sst
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl shade
  
 shade/set/L=2 sst* 10000
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl shade
  
 shade/set/L=2 sst/ 10000
 ppl shakey 1, 1, 0.1, 0, -2, 8,  `($ppl$xorg)+($ppl$xlen)+0.3`,  `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)`
- !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  9.225,  9.525, 1.375, 4.208
+ !-> ppl shakey 1, 1, 0.1, 0, -2, 8,  8.97,  9.27, 1.4, 4.333
 ppl shade
  
  
@@ -46115,7 +46138,7 @@ list tsulab
 ! to the end of the shortened second line.
  
 label/nouser 3.6,`($ppl$ylen)+0.2`,0,0,0.08, `tsulab`
- !-> PPL %LABEL/nouser 3.6,5.95,0,0,0.08, 1234567891123456789212345678931234567894123456789512345678961234567897123456789812345678991234567890<nl>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+ !-> PPL %LABEL/nouser 3.6,6.2,0,0,0.08, 1234567891123456789212345678931234567894123456789512345678961234567897123456789812345678991234567890<nl>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  
 ! result of COMPRESSK_BY function does not vary in X
 GO bn_reset
@@ -47067,15 +47090,15 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  0.000E+00  6.550E+00 0.120    0  SYSTEM  @ASLONGITUDE : 179E
+ LAB 1  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLONGITUDE : 179E
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 2  0.000E+00  6.350E+00 0.120    0  SYSTEM  @ASLATITUDE : 1S
+ LAB 2  0.000E+00  6.600E+00 0.120    0  SYSTEM  @ASLATITUDE : 1S
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 3  7.750E+00  6.290E+00 0.090    0  SYSTEM  @ASDATA SET: coads_climatology
+ LAB 3  8.000E+00  6.550E+00 0.090    0  SYSTEM  @ASDATA SET: coads_climatology
  LINE PT:    0.000E+00 0.000E+00  NO LINE     RIGHT  JUSTIFY LABEL
- LAB 4  3.880E+00  6.080E+00 0.120    0  SYSTEM  @A
+ LAB 4  4.000E+00  6.330E+00 0.120    0  SYSTEM  @A
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
- LAB 5  7.750E+00  6.500E+00 0.071    0  SYSTEM  @ASOPeNDAP URL: http://ferret.pmel.noaa.gov/thredds/dodsC/data/PMEL/
+ LAB 5  8.000E+00  6.750E+00 0.073    0  SYSTEM  @ASOPeNDAP URL: http://ferret.pmel.noaa.gov/thredds/dodsC/data/PMEL/
  LINE PT:    0.000E+00 0.000E+00  NO LINE     RIGHT  JUSTIFY LABEL
  
  
@@ -47130,7 +47153,7 @@ use coads_climatology
  
 shade/set/lev=(-inf),(4,28,2)(inf) sst[l=1]
 ppl shakey,1,0,-0.1,,,,,,`($ppl$ylen)+($ppl$yorg)+0.1`
- !-> ppl shakey,1,0,-0.1,,,,,,7.225
+ !-> ppl shakey,1,0,-0.1,,,,,,7.5
 ppl shade
  
 can view
@@ -47165,13 +47188,13 @@ can view
 set view upper
 fill/x=20e:150e/set/lev=(-inf),(4,28,0.5)(inf)/y=0:90 sst[l=1]
 ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1`
- !-> ppl shakey,1,0,-0.1,10,,,,,2.975
+ !-> ppl shakey,1,0,-0.1,10,,,,,3.1
 ppl fill
  
 set view lower
 shade/set/lev=(-inf),(4,28,0.5)(inf)/y=0:90/key=cont sst[l=1]
 ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1`
- !-> ppl shakey,1,0,-0.1,10,,,,,2.975
+ !-> ppl shakey,1,0,-0.1,10,,,,,3.1
 ppl shade
  
 ! Some one-sided examples
@@ -47181,7 +47204,7 @@ fill/lev=(-2,28,1)(inf) sst[l=1]
  
 shade/set/lev=(-inf),(4,30,0.5)/key=cont/pal=rainbow sst[l=1]
 ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1`
- !-> ppl shakey,1,0,-0.1,10,,,,,7.225
+ !-> ppl shakey,1,0,-0.1,10,,,,,7.5
 ppl shade
  
 let filler = missing(sst[l=1],-999)
@@ -47572,14 +47595,14 @@ set view ll
 shade/key=cont/title="cont key with shakey call"/set temp[l=1]
  
 let/quiet x1 = `($ppl$xorg)+0.1`
- !-> DEFINE VARIABLE/quiet x1 = 1.475
+ !-> DEFINE VARIABLE/quiet x1 = 1.3
 let/quiet y1 = `($ppl$yorg)+($ppl$ylen)+0.1`
- !-> DEFINE VARIABLE/quiet y1 = 4.735
+ !-> DEFINE VARIABLE/quiet y1 = 4.923
 let/quiet y2 = `($ppl$yorg)+($ppl$ylen)+0.5`
- !-> DEFINE VARIABLE/quiet y2 = 5.135
+ !-> DEFINE VARIABLE/quiet y2 = 5.323
  
 ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2`
- !-> ppl shakey ,0,-.12,2,,,1.475,,4.735,5.135
+ !-> ppl shakey ,0,-.12,2,,,1.3,,4.923,5.323
 go unlabel 4
 go unlabel 5
 ppl shade
@@ -47590,18 +47613,18 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         1.48     6.15     4.74     5.14
+         1.30     6.31     4.92     5.32
  
 set view lr
 let/quiet x1 = `($ppl$xorg)+1`
- !-> DEFINE VARIABLE/quiet x1 = 2.375
+ !-> DEFINE VARIABLE/quiet x1 = 2.2
 let/quiet x2 = `($ppl$xorg)+($ppl$xlen)-1`
- !-> DEFINE VARIABLE/quiet x2 = 5.05
+ !-> DEFINE VARIABLE/quiet x2 = 5.212
 let/quiet y1 = `($ppl$yorg)`
- !-> DEFINE VARIABLE/quiet y1 = 1.375
+ !-> DEFINE VARIABLE/quiet y1 = 1.4
 shade/title="with shakey, restore default key style"/set temp[l=1]
 ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1`
- !-> ppl shakey ,0,-.12,3,,,2.375,5.05,1.375
+ !-> ppl shakey ,0,-.12,3,,,2.2,5.212,1.4
 ppl shade
  
 can view
@@ -47616,14 +47639,14 @@ set view ll
 fill/key=cont/title="cont key with shakey call"/set temp[l=1]
  
 let/quiet x1 = `($ppl$xorg)+0.1`
- !-> DEFINE VARIABLE/quiet x1 = 1.475
+ !-> DEFINE VARIABLE/quiet x1 = 1.3
 let/quiet y1 = `($ppl$yorg)+($ppl$ylen)+0.1`
- !-> DEFINE VARIABLE/quiet y1 = 4.735
+ !-> DEFINE VARIABLE/quiet y1 = 4.923
 let/quiet y2 = `($ppl$yorg)+($ppl$ylen)+0.5`
- !-> DEFINE VARIABLE/quiet y2 = 5.135
+ !-> DEFINE VARIABLE/quiet y2 = 5.323
  
 ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2`
- !-> ppl shakey ,0,-.12,2,,,1.475,,4.735,5.135
+ !-> ppl shakey ,0,-.12,2,,,1.3,,4.923,5.323
 go unlabel 4
 go unlabel 5
 ppl fill
@@ -47634,18 +47657,18 @@ ppl list shakey
 
 
          X LO     X HI     Y LO     Y HI
-         1.48     6.15     4.74     5.14
+         1.30     6.31     4.92     5.32
  
 set view lr
 let/quiet x1 = `($ppl$xorg)+1`
- !-> DEFINE VARIABLE/quiet x1 = 2.375
+ !-> DEFINE VARIABLE/quiet x1 = 2.2
 let/quiet x2 = `($ppl$xorg)+($ppl$xlen)-1`
- !-> DEFINE VARIABLE/quiet x2 = 5.05
+ !-> DEFINE VARIABLE/quiet x2 = 5.212
 let/quiet y1 = `($ppl$yorg)`
- !-> DEFINE VARIABLE/quiet y1 = 1.375
+ !-> DEFINE VARIABLE/quiet y1 = 1.4
 fill/title="with shakey, restore default key style"/set temp[l=1]
 ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1`
- !-> ppl shakey ,0,-.12,3,,,2.375,5.05,1.375
+ !-> ppl shakey ,0,-.12,3,,,2.2,5.212,1.4
 ppl fill
 *** Running test: bn581_bug_fixes.jnl
 ! bn581_bug_fixes.jnl
@@ -48146,11 +48169,11 @@ let the_data_var = {4,5,4}
  
 list/format=comma country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
      COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR
 1   / 1:"JP",1,4000,1000500,"w",4  
@@ -48159,11 +48182,11 @@ list/format=comma country, id, aa, bb, newcountry, the_data_var
  
 list/format=tab/norow country, id, aa, bb, newcountry, the_data_var
              X: 0.5 to 3.5
- Column  1: COUNTRY is {"JP", "JP", "US"}    BAD FLAG : -1.E+34
+ Column  1: COUNTRY is {"JP", "JP", "US"}
  Column  2: ID is {1,2,3}    BAD FLAG : -1.E+34
  Column  3: AA is 4000* ID    BAD FLAG : -1.E+34
  Column  4: BB is 1000000* ID + 500    BAD FLAG : -1.E+34
- Column  5: NEWCOUNTRY is {"w", "c", "e"}    BAD FLAG : -1.E+34
+ Column  5: NEWCOUNTRY is {"w", "c", "e"}
  Column  6: THE_DATA_VAR is {4,5,4}    BAD FLAG : -1.E+34
 COUNTRY	ID	AA	BB	NEWCOUNTRY	THE_DATA_VAR
 "JP"	1	4000	1000500	"w"	4  
@@ -48301,7 +48324,7 @@ list element_index_str_n (axy[k=1:2,j=1:2], {"a10", "a2", "d4", "c5"})
  
 ! ferret version
 sh sym FERRET_VERSION
-FERRET_VERSION = "6.9"
+FERRET_VERSION = "6.93"
  
 ! history attribute
 let a = 12
@@ -48319,7 +48342,7 @@ LAB1 = "X : 0.5 to 314.5"
  
 ! show commands without an argument, lists version number at the top
 sho command
- Commands in Program FERRET (PyFerret 1.0.2) version6.9:
+ Commands in Program FERRET (PyFerret 1.1.0) version6.93:
  SET
  SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE/QUALITY/ANTIALIA/NOANTIAL
       /ENGINE/COLOR/OPACITY/THICKEN/XPIXELS/YPIXELS/XINCHES/YINCHES/TEXTPROM
@@ -48454,7 +48477,7 @@ go ptest
 PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20)
  
 sh sym win_title
-WIN_TITLE = "31-Mar-14_17:28"
+WIN_TITLE = "5-Nov-14_16:39"
  
 set win/title="set the title"
 sho sym win_title
@@ -48472,7 +48495,7 @@ sho sym win_title
 WIN_TITLE = "_"
  
 set win/title="($session_date):($session_time)"
- !-> set win/title="31-Mar-14:17:28"
+ !-> set win/title=" 5-Nov-14:16:39"
  
 ! If the date or time starts with a blank then we get an extra
 ! underscore in the window title. Evaluating the symbols into
@@ -48481,16 +48504,16 @@ set win/title="($session_date):($session_time)"
 ! If so substitute another string.
  
 DEFINE SYMBOL the_date = ($session_date"SESSION_DATE")
- !-> DEFINE SYMBOL the_date = 31-Mar-14
+ !-> DEFINE SYMBOL the_date =  5-Nov-14
 DEFINE SYMBOL the_time = ($session_time"SESSION_TIME")
- !-> DEFINE SYMBOL the_time = 17:28
+ !-> DEFINE SYMBOL the_time = 16:39
 SET WIN/TITLE="($the_date):($the_time)"
- !-> SET WIN/TITLE="31-Mar-14:17:28"
+ !-> SET WIN/TITLE="5-Nov-14:16:39"
  
 can win/all
 set win/new
 sh sym win_title
-WIN_TITLE = "31-Mar-14:17:28"
+WIN_TITLE = "5-Nov-14:16:39"
 *** Running test: bn_last_error.jnl
 ! bn_last_error.jnl
 ! acm Nov 2005
@@ -51424,10 +51447,10 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 7.75E+00 CSIZE= 1.00E-01
+         LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 8.00E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  LABEL FORMAT=  (F8.3,'LONE')       
+         XORG= 1.20E+00  LABEL FORMAT=  (F8.3,'LONE')       
  
 ! But /HLIM=312.23:312.3801/... works.
 fill/hlim=312.23:312.3801/vlim=37.03:40.91 0*x[gx=xfull] * y[gy=yfull]
@@ -51435,10 +51458,10 @@ ppl list xaxis
 
 
          XAXIS QUALITIES
-         LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 7.75E+00 CSIZE= 1.00E-01
+         LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 8.00E+00 CSIZE= 1.00E-01
           TOP AXIS= ON  BOTTOM AXIS= ON 
          MANUAL  NORMAL NMTC=  0 LINT=  2 LABEL= -1 NSIG=  2 NTIC= 10
-         XORG= 1.38E+00  LABEL FORMAT=  (F8.2,'LONE')       
+         XORG= 1.20E+00  LABEL FORMAT=  (F8.2,'LONE')       
  
 ! Bug 1275 stray characters appear in data lines listing string data
 GO bn_reset
@@ -52749,8 +52772,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -52794,8 +52817,8 @@ sho dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (PSXT91_108)           DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -54104,7 +54127,7 @@ set mem/siz=90
 sh sym ferret_memory
 FERRET_MEMORY = "90"
 show memory
- Current size of FERRET memory cache: 90 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 90 MegaWords  (1 word = 8 bytes)
  
 set mem/size=0.05
 sh sym ferret_memory
@@ -54116,7 +54139,7 @@ FERRET_MEMORY = "0.2"
  
 set mem/siz=25.6  ! return to the default setting
 show memory
- Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 4 bytes)
+ Current size of FERRET memory cache: 25.6 MegaWords  (1 word = 8 bytes)
 *** Running test: bn605_bug_fixes.jnl
 ! bn604_bug_fixes.jnl
 ! test various fixes that went into version 6.05
@@ -54375,22 +54398,39 @@ EXPND_BY_LEN_STR(var,len,nx)
 FC_ISUBSET(index_list,lengths,nx,FullData)
 EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len)
 EXPNDI_ID_BY_Z_COUNTS(counts,max profile len)
+EXPNDI_BY_M_COUNTS(dat,counts,max_row_len)
 STR_MASK(STRING,MASK,--)
 SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS)
+SEPARATE(A,Rowsize,FixLongitudes)
 ADD_9(A,B,C,D,E,F,G,H,I)
 APPENDE(ENS,VAR)
 AVET(A)
 DATES(Offsets)
+EFSTRINGS(--)
 FACTORIAL(A)
 FFT_AMP(A)
 FFTA_SAMPLE(A)
 FFT_PHAS(A)
+LENGTH_OF_STRINGS(--)
+MAXSTRLEN(A)
 PASS_THRU(A)
+PASS_THRU_STRING(A)
 PERCENT_GOOD_T(A)
+PICK_A_STRING(A,N)
+PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3)
+SAMPLE_FAST_I(V,Indices)
+SEPARATE(A,Rowsize,FixLongitudes)
+SEPARATE_STR(A,Rowsize,FixLongitudes)
 STORAGE(A)
 STRING_ARG(Flags,NString)
+STRING_CAT3(A,B,C)
+STRING_LEN_SUM(S1,S2)
+STRINGS_AS_ARGS(S1,S2,NCHAR)
+STR_MISSING(MASK,STR,REPL)
 STUDENT_T_CUTOFF(P,nf)
 SUBTRACT(A,B)
+WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename)
+STATS_HISTOGRAM(VALS,BINS_TEMPLATE)
 STATS_BETA_CDF(PTS,ALPHA,BETA)
 STATS_BETA_ISF(PTS,ALPHA,BETA)
 STATS_BETA_PDF(PTS,ALPHA,BETA)
@@ -54546,7 +54586,6 @@ STATS_TTEST2IND(SAMPLEA,SAMPLEB)
 STATS_TTEST2REL(SAMPLEA,SAMPLEB)
 STATS_ZSCORE(VALUES)
 STATS_HELPER(PDNAME)
-STATS_HISTOGRAM(VALS,BINS_TEMPLATE)
 SHAPEFILE_READXY(SHAPEFILE,MAXPTS)
 SHAPEFILE_READXYVAL(SHAPEFILE,VALNAME,MAXPTS)
 SHAPEFILE_READXYZ(SHAPEFILE,MAXPTS)
@@ -55575,13 +55614,13 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  0.000E+00  6.550E+00 0.120    0  SYSTEM  @ASLATITUDE : 39N
+ LAB 1  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLATITUDE : 39N
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 2  0.000E+00  6.350E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
+ LAB 2  0.000E+00  6.600E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 3  7.750E+00  6.380E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
+ LAB 3  8.000E+00  6.630E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
  LINE PT:    0.000E+00 0.000E+00  NO LINE     RIGHT  JUSTIFY LABEL
- LAB 4  3.880E+00  6.080E+00 0.120    0  SYSTEM  @A
+ LAB 4  4.000E+00  6.330E+00 0.120    0  SYSTEM  @A
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  
 ! and now valid data overlaid with all-missing data
@@ -55594,13 +55633,13 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  0.000E+00  6.550E+00 0.120    0  SYSTEM  @ASLATITUDE : 9N
+ LAB 1  0.000E+00  6.800E+00 0.120    0  SYSTEM  @ASLATITUDE : 9N
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 2  0.000E+00  6.350E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
+ LAB 2  0.000E+00  6.600E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 3  7.750E+00  6.380E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
+ LAB 3  8.000E+00  6.630E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
  LINE PT:    0.000E+00 0.000E+00  NO LINE     RIGHT  JUSTIFY LABEL
- LAB 4  3.880E+00  6.080E+00 0.120    0  SYSTEM  @A
+ LAB 4  4.000E+00  6.330E+00 0.120    0  SYSTEM  @A
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
  LAB 5 -3.700E-01 -5.500E-01 0.080    0  SYSTEM  @ASSST[Y=39N] No Valid Data
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
@@ -55613,17 +55652,17 @@ ppl list labels
  @ASDeg C                                                                       
 
           XPOS       YPOS     HGT   ROT   UNITS
- LAB 1  0.000E+00  6.350E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
+ LAB 1  0.000E+00  6.600E+00 0.120    0  SYSTEM  @ASTIME : 16-JAN 06:00
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 2  7.750E+00  6.380E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
+ LAB 2  8.000E+00  6.630E+00 0.120    0  SYSTEM  @ASDATA SET: coads_climatology
  LINE PT:    0.000E+00 0.000E+00  NO LINE     RIGHT  JUSTIFY LABEL
- LAB 3  3.880E+00  6.080E+00 0.120    0  SYSTEM  @A
+ LAB 3  4.000E+00  6.330E+00 0.120    0  SYSTEM  @A
  LINE PT:    0.000E+00 0.000E+00  NO LINE     CENTER JUSTIFY LABEL
- LAB 4  2.490E+00 -7.900E-01 0.120    0  SYSTEM  @ASSST[Y=9N]
+ LAB 4  2.530E+00 -8.000E-01 0.120    0  SYSTEM  @ASSST[Y=9N]
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 5  5.610E+00 -7.900E-01 0.114    0  SYSTEM  @ASSST[Y=49N] No Valid Data
+ LAB 5  5.780E+00 -7.900E-01 0.119    0  SYSTEM  @ASSST[Y=49N] No Valid Data
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
- LAB 6  2.490E+00 -1.050E+00 0.120    0  SYSTEM  @ASSST[Y=19N]
+ LAB 6  2.530E+00 -1.050E+00 0.120    0  SYSTEM  @ASSST[Y=19N]
  LINE PT:    0.000E+00 0.000E+00  NO LINE     LEFT   JUSTIFY LABEL
  
 ! For 2D plots create a new MODE NODATA_LAB which if on, puts
@@ -57040,7 +57079,7 @@ SORTI(DAT)
           T: inherited from argument(s)
           E: inherited from argument(s)
           F: inherited from argument(s)
-    DAT: variable to sort in I
+    DAT: variable to sort in I (FLOAT)
         Influence on output axes:
           X: no influence (indicate argument limits with "[]")
           Y: passed to result grid
@@ -58661,10 +58700,10 @@ SH GRID am
  normal    F
 *** Running test: bn_clock_syms.jnl
 SH SYM delta_cpu, clock_secs, current_date, current_time
-DELTA_CPU = "0.527918"
-CLOCK_SECS = "0.307"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:28:56"
+DELTA_CPU = "0.525919"
+CLOCK_SECS = "0.309"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:40:37"
 ! test special symbols DELTA_CPU, CLOCK_SECS
 !
 ! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE
@@ -58673,8 +58712,8 @@ CURRENT_TIME = "17:28:56"
 use gt4d011
 shade/k=1 temp[L=@ave]
 sh sym DELTA_CPU, CLOCK_SECS
-DELTA_CPU = "0.050993"
-CLOCK_SECS = "0.358"
+DELTA_CPU = "0.060991"
+CLOCK_SECS = "0.369"
  
 repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=1
@@ -58688,60 +58727,60 @@ repeat/k=1:10 shade temp[L=@ave]
 !-> REPEAT: K=9
 !-> REPEAT: K=10
 let ten_plots = ($DELTA_CPU)
- !-> DEFINE VARIABLE ten_plots = 0.439933
+ !-> DEFINE VARIABLE ten_plots = 0.676897
 sh sym DELTA_CPU, CLOCK_SECS
 DELTA_CPU = "0"
-CLOCK_SECS = "0.798"
+CLOCK_SECS = "1.047"
  
 let  sumclock = 0
 let  sumcpu = 0
 sh sym CLOCK_SECS
-CLOCK_SECS = "0.799"
+CLOCK_SECS = "1.047"
 repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\
 let sumcpu =`sumcpu + dt`)
  !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`)
 !-> REPEAT: K=1
- !-> DEFINE VARIABLE dt = 0.036994
- !-> DEFINE VARIABLE sumcpu =0.036994
+ !-> DEFINE VARIABLE dt = 0.042993
+ !-> DEFINE VARIABLE sumcpu =0.042993
 !-> REPEAT: K=2
- !-> DEFINE VARIABLE dt = 0.040994
- !-> DEFINE VARIABLE sumcpu =0.077988
+ !-> DEFINE VARIABLE dt = 0.047993
+ !-> DEFINE VARIABLE sumcpu =0.090986
 !-> REPEAT: K=3
- !-> DEFINE VARIABLE dt = 0.039994
- !-> DEFINE VARIABLE sumcpu =0.117982
+ !-> DEFINE VARIABLE dt = 0.047993
+ !-> DEFINE VARIABLE sumcpu =0.138979
 !-> REPEAT: K=4
- !-> DEFINE VARIABLE dt = 0.041993
- !-> DEFINE VARIABLE sumcpu =0.159975
+ !-> DEFINE VARIABLE dt = 0.048992
+ !-> DEFINE VARIABLE sumcpu =0.187971
 !-> REPEAT: K=5
- !-> DEFINE VARIABLE dt = 0.038994
- !-> DEFINE VARIABLE sumcpu =0.198969
+ !-> DEFINE VARIABLE dt = 0.045993
+ !-> DEFINE VARIABLE sumcpu =0.233964
 !-> REPEAT: K=6
- !-> DEFINE VARIABLE dt = 0.040994
- !-> DEFINE VARIABLE sumcpu =0.239963
+ !-> DEFINE VARIABLE dt = 0.047993
+ !-> DEFINE VARIABLE sumcpu =0.281957
 !-> REPEAT: K=7
- !-> DEFINE VARIABLE dt = 0.037994
- !-> DEFINE VARIABLE sumcpu =0.277957
+ !-> DEFINE VARIABLE dt = 0.043993
+ !-> DEFINE VARIABLE sumcpu =0.32595
 !-> REPEAT: K=8
- !-> DEFINE VARIABLE dt = 0.035995
- !-> DEFINE VARIABLE sumcpu =0.313952
+ !-> DEFINE VARIABLE dt = 0.043994
+ !-> DEFINE VARIABLE sumcpu =0.369944
 !-> REPEAT: K=9
- !-> DEFINE VARIABLE dt = 0.035995
- !-> DEFINE VARIABLE sumcpu =0.349947
+ !-> DEFINE VARIABLE dt = 0.042993
+ !-> DEFINE VARIABLE sumcpu =0.412937
 !-> REPEAT: K=10
- !-> DEFINE VARIABLE dt = 0.035994
- !-> DEFINE VARIABLE sumcpu =0.385941
+ !-> DEFINE VARIABLE dt = 0.041993
+ !-> DEFINE VARIABLE sumcpu =0.45493
  
 say `sumcpu`
- !-> MESSAGE/CONTINUE 0.385941
-0.385941
+ !-> MESSAGE/CONTINUE 0.45493
+0.45493
 sh sym CLOCK_SECS
-CLOCK_SECS = "1.187"
+CLOCK_SECS = "1.505"
  
 SH SYM session_date, current_date, session_time, current_time
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:28"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:28:57"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:40"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:40:38"
 *** Running test: bn63_bug_fixes.jnl
 ! bn63_bug_fixes.jnl
 ! Fixes that go into v6.3 release
@@ -62652,9 +62691,9 @@ list contents
              VARIABLE : { SPAWN:"cat redirect_journal.txt" }
              SUBSET   : 47 points (X)
  1    /  1:" ! NOAA/PMEL TMAP"                                                          
- 2    /  2:" ! FERRET v6.9 (PyFerret 1.0.2)"                                            
- 3    /  3:" ! Linux 2.6.18-371.4.1.el5 - 03/31/14"                                     
- 4    /  4:" ! 31-Mar-14 17:29     "                                                    
+ 2    /  2:" ! FERRET v6.93 (PyFerret 1.1.0)"                                           
+ 3    /  3:" ! Linux 2.6.18-398.el5 - 11/05/14"                                         
+ 4    /  4:" !  5-Nov-14 16:41     "                                                    
  5    /  5:""                                                                           
  6    /  6:"! "                                                                         
  7    /  7:"!! --- 22. produce some output to stdout and stderr"                        
@@ -62713,23 +62752,24 @@ sh trans
 variable transforms e.g.SST[T=1-jan:15-mar at DDC]
    code        description                  code        description
    ----        -----------                  ----        -----------
-   @ITP        interpolated                 @SPZ        Parzen smoothed
-   @AVE        averaged                     @FAV        ave-filled
-   @VAR        variance                     @FLN        linear-filled
-   @SUM        summed                       @FNR        nearest-filled
-   @RSU        running sum                  @NGD        number of valid
-   @SHF        shifted                      @NBD        number flagged bad
-   @MIN        minimum                      @LOC        location
-   @MAX        maximum                      @WEQ        weighted equal
-   @DDC        centered derivative          @CDA        closest dist above
-   @DDF        forward derivative           @CDB        closest dist below
-   @DDB        backwards derivative         @CIA        closest index above
-   @DIN        integrated                   @CIB        closest index below
-   @IIN        indef. integ.                @EVN        event mask
-   @SBX        box smoothed                 @MED        median smoothed
-   @SBN        binomial smoothed            @SMX        maximum smoothed
-   @SWL        Welch smoothed               @SMN        minimum smoothed
-   @SHN        Hanning smoothed             @STD        standard deviation
+   @ITP        interpolated                 @FAV        ave-filled
+   @AVE        averaged                     @FLN        linear-filled
+   @VAR        variance                     @FNR        nearest-filled
+   @SUM        summed                       @NGD        number of valid
+   @RSU        running sum                  @NBD        number flagged bad
+   @SHF        shifted                      @LOC        location
+   @MIN        minimum                      @WEQ        weighted equal
+   @MAX        maximum                      @CDA        closest dist above
+   @DDC        centered derivative          @CDB        closest dist below
+   @DDF        forward derivative           @CIA        closest index above
+   @DDB        backwards derivative         @CIB        closest index below
+   @DIN        integrated                   @EVN        event mask
+   @IIN        indef. integ.                @MED        median smoothed
+   @SBX        box smoothed                 @SMX        maximum smoothed
+   @SBN        binomial smoothed            @SMN        minimum smoothed
+   @SWL        Welch smoothed               @STD        standard deviation
+   @SHN        Hanning smoothed             @WGT        weights for avg,int
+   @SPZ        Parzen smoothed
  
 regridding transforms e.g.SST[GX=x5deg at AVE]
    code        description                  code        description
@@ -65087,40 +65127,40 @@ can mode ver
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.099
-randu2_randn2       0.745
-randu2_randn2       0.727
-randu2_randn2       0.806
-randu2_randn2       0.630
+randu2_randn2       0.504
+randu2_randn2       0.458
+randu2_randn2       0.703
+randu2_randn2       0.525
+randu2_randn2       0.621
              VARIABLE : RANDU2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2       0.272
-randu2_randn2       0.190
-randu2_randn2       0.167
-randu2_randn2       0.600
-randu2_randn2       0.331
+randu2_randn2       0.252
+randu2_randn2       0.687
+randu2_randn2       0.408
+randu2_randn2       0.233
+randu2_randn2       0.062
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.279
-randu2_randn2       0.868
+randu2_randn2       0.859
+randu2_randn2       0.974
+randu2_randn2       0.676
+randu2_randn2       0.288
+randu2_randn2       0.453
 randu2_randn2       0.247
-randu2_randn2       0.991
-randu2_randn2       0.796
-randu2_randn2       0.525
              VARIABLE : RANDU2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       0.705
-randu2_randn2       0.528
-randu2_randn2       0.876
-randu2_randn2       0.270
-randu2_randn2       0.039
-randu2_randn2       0.279
+randu2_randn2       0.860
+randu2_randn2       0.919
+randu2_randn2       0.914
+randu2_randn2       0.940
+randu2_randn2       0.169
+randu2_randn2       0.241
              VARIABLE : RANDU2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -65145,40 +65185,40 @@ randu2_randn2       0.900
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2      -0.753
-randu2_randn2      -1.614
-randu2_randn2       0.231
-randu2_randn2       1.101
-randu2_randn2      -1.611
+randu2_randn2       0.823
+randu2_randn2       0.797
+randu2_randn2      -0.547
+randu2_randn2      -0.022
+randu2_randn2       0.989
              VARIABLE : RANDN2(XBIG,-1)
              BAD FLAG : -1.E+34       
              SUBSET   : 5 points (X)
              X        : 0.5 to 5.5
-randu2_randn2      -0.920
-randu2_randn2       0.032
-randu2_randn2      -0.271
-randu2_randn2       2.174
-randu2_randn2       0.036
+randu2_randn2      -1.026
+randu2_randn2       0.024
+randu2_randn2      -0.560
+randu2_randn2       0.330
+randu2_randn2      -0.057
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2      -0.505
-randu2_randn2      -0.039
-randu2_randn2       1.500
-randu2_randn2      -0.807
-randu2_randn2      -0.832
-randu2_randn2      -0.095
+randu2_randn2       0.205
+randu2_randn2       0.576
+randu2_randn2      -1.683
+randu2_randn2       0.867
+randu2_randn2      -0.172
+randu2_randn2       0.518
              VARIABLE : RANDN2(XX,0)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
              X        : 0.5 to 6.5
-randu2_randn2       1.362
-randu2_randn2      -1.480
-randu2_randn2      -1.408
-randu2_randn2       0.470
-randu2_randn2       0.966
-randu2_randn2      -2.000
+randu2_randn2      -1.766
+randu2_randn2       0.041
+randu2_randn2      -1.355
+randu2_randn2       2.133
+randu2_randn2      -1.568
+randu2_randn2       1.024
              VARIABLE : RANDN2(XX,12436)
              BAD FLAG : -1.E+34       
              SUBSET   : 6 points (X)
@@ -65203,14 +65243,14 @@ randu2_randn2      -0.124
  Column  1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1)
  Column  2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z)
  Column  3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z)
-randu2_randn2       1.081       1.672       0.732
-randu2_randn2       1.672       1.081       0.732
-randu2_randn2       0.732       0.732       0.483
-randu2_randn2       0.483       0.483       0.483
-randu2_randn2      -0.814      -0.312       0.483
-randu2_randn2      -0.312      -0.312       0.483
-randu2_randn2       0.290       0.290       0.483
-randu2_randn2       0.332       0.332       0.483
+randu2_randn2       1.989       1.989       0.710
+randu2_randn2       0.955       0.955       0.710
+randu2_randn2       0.710       0.710      -0.049
+randu2_randn2      -0.137      -0.137       0.437
+randu2_randn2      -0.462      -0.462       0.437
+randu2_randn2      -0.551      -0.462       0.437
+randu2_randn2      -0.049      -0.049       0.437
+randu2_randn2       0.437       0.437       0.437
 *** Running test: bn_axis_cf.jnl
 ! Ticket 1792: Write axes with CF-compliant units
 ! and with standard name attributes for geophysical attrs.
@@ -70878,8 +70918,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70933,8 +70973,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -70977,8 +71017,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71021,8 +71061,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71058,8 +71098,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71096,8 +71136,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71163,8 +71203,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71212,8 +71252,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71273,8 +71313,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71314,8 +71354,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71355,8 +71395,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71396,8 +71436,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71434,8 +71474,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  modulo          CHAR        1    T
@@ -71662,8 +71702,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        FLOAT     units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71700,8 +71740,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        FLOAT     units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71747,8 +71787,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (COADSX140_140)        DOUBLE    units           CHAR        12   T       degrees_east
                                  point_spacing   CHAR        4    T       even
@@ -71791,8 +71831,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -71816,8 +71856,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             INT       units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -71841,8 +71881,8 @@ use mytype.nc; sh dat/att mytype.nc; can data mytype
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (MYHOURS1)             DOUBLE    units           CHAR        31   T       hours since 1901-01-15 00:00:00
                                  axis            CHAR        1    T       T
@@ -72270,8 +72310,8 @@ variables:
 		A:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72299,8 +72339,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72350,8 +72390,8 @@ variables:
 		E410:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 366, 1096.485, 1826.97 ;
@@ -72821,6 +72861,54 @@ sh grid sal
  normal    T
  normal    E
  normal    F
+ 
+! This file from the datset "West Coast Carbon cruises" in our
+! example erdadp, has the cf_role attribute on a coordinate variable.
+!  prof, time, latitude, longitude, and rowsize are on the E axis
+!  press_db and pco2 are on the X asis
+ 
+use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ 
+sh dat 2
+     currently SET data sets:
+    2> ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc  (default)
+ name     title                             I         J         K         L         M         N
+ PROF     Prof                             ...       ...       ...       ...       1:21      ...
+ TIME     Time                             ...       ...       ...       ...       1:21      ...
+ LATITUDE Latitude                         ...       ...       ...       ...       1:21      ...
+ LONGITUDE
+          Longitude                        ...       ...       ...       ...       1:21      ...
+ ROWSIZE  Number of Observations for this  ...       ...       ...       ...       1:21      ...
+ PRESS_DB PRESS_DB                         1:373     ...       ...       ...       ...       ...
+ PCO2     PCO2                             1:373     ...       ...       ...       ...       ...
+ 
+sh att (profile)
+     attributes for dataset: ./WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc
+ (profile)._FillValue = -1.E+34
+ (profile).actual_range = 70, 90
+ (profile).cf_role = profile_id 
+ (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt 
+ (profile).long_name = profile ID: Cruise and Station 
+ (profile).missing_value = -1.E+34
+ (profile).orig_file_axname = profile 
+sh grid rowsize
+    GRID GSS1
+ name       axis              # pts   start                end
+ normal    X
+ normal    Y
+ normal    Z
+ normal    T
+ PROFILE   E                   21 r   70                   90
+ normal    F
+sh grid pco2
+    GRID GSS2
+ name       axis              # pts   start                end
+ OBS1      X                  373 r   1                    373
+ normal    Y
+ normal    Z
+ normal    T
+ normal    E
+ normal    F
 *** Running test: bn_nco_append.jnl
 ! bn_nco_append.jnl
 ! 5/2013 add a test appending files with ncks
@@ -72866,8 +72954,8 @@ variables:
 		CYCLE_ORIG:history = "From z2" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_nobounds.jnl
 ! bn_nobounds.jnl
@@ -72896,8 +72984,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -72927,8 +73015,8 @@ variables:
 		AVAR:long_name = "X[GX=XIRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XIRREG = 0, 1, 2, 4, 8 ;
@@ -72989,8 +73077,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! On a SAVE either with /BOUNDS or no bounds qualifier,
@@ -73017,8 +73105,8 @@ variables:
 		A:history = "From coads" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 *** Running test: bn_write_integer_att.jnl
@@ -74182,8 +74270,8 @@ variables:
 		LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! The behavior is unchanged for user-defined variables
@@ -74205,8 +74293,8 @@ variables:
 		STRVAR:long_name = "mystrings" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 *** Running test: bn_single_colorlev.jnl
@@ -74227,8 +74315,8 @@ shade/lev=(25)/L=1 INT(sst)
 fill/lev=(20,30,10)/L=1 sst
  
 *** Running test: bn69_bug_fixes.jnl
-! bn687_bug_fixes
-! test various fixes that went into version 6.87
+! bn69_bug_fixes
+! test various fixes that went into version 6.9
 ! 02/2014 ACM
  
 GO bn_reset
@@ -74425,8 +74513,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Yet more combinations
@@ -74455,8 +74543,8 @@ variables:
 		A:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST
@@ -74476,8 +74564,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Subsets also use XAXIS_TEST1
@@ -74497,8 +74585,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! Unless we use /KEEP_AXISNAMES - which removes renaming
@@ -74519,8 +74607,8 @@ variables:
 		B:history = "From b" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
  
 ! If we try /KEEP_AXISNAMES but there is a conflict, it's an err
@@ -74627,6 +74715,15 @@ sh var
      C = 1
  
 use gt4d011.cdf
+! again, with user-variables and an open dataset the message is as above
+ 
+let a = 1
+let b = 2
+set var/name=b a
+ 
+! Intentional error, new name already in file
+ 
+ 
 ! Intentional error, new name already in file
 set var/name=temp salt
 show dat
@@ -74680,7 +74777,8 @@ show dat
  DIFF[D=gt4d011] = TAUX - TAUY
  
  
- 
+! another error, new name is a user-var
+yes? set var/name=diff w
  
 SET MODE/LAST ignore
 *** Running test: bn_bad_axis_bounds.jnl
@@ -74918,8 +75016,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74934,8 +75032,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74950,8 +75048,8 @@ sh dat/att
  Variable    VarType(in dset)    AttributeName   AttType     Size OutFlag AttValue
 ------------------------------------------------------------------------------------------
   
- .                               history         CHAR        38   T       FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14
-                                 Conventions     CHAR        6    F       CF-1.0
+ .                               history         CHAR        39   T       FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14
+                                 Conventions     CHAR        6    F       CF-1.6
   
 (x_in_meters)          DOUBLE    units           CHAR        6    T       meters
                                  point_spacing   CHAR        4    T       even
@@ -74975,6 +75073,2048 @@ set axis/name=45 x_in_meters
 set axis/name=.fr x_in_meters
  
 set mode/last ignore
+*** Running test: bn691_bug_fixes.jnl
+! bn691_bug_fixes
+! test various fixes that went into version 6.91
+! 04/2014 ACM
+ 
+GO bn_reset
+cancel mode verify
+GO err69_arg_type_error
+! err69_arg_type_error
+! See ticket 2169
+!
+set mode ignore
+sh func  tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+    A: time steps to convert
+    B: variable with reference time axis
+    C: output precision (STRING)
+sh func /detail tax_datestring
+TAX_DATESTRING(A,B,C)
+    Returns date string for time axis coordinate values
+        Axes of result:
+          X: inherited from argument(s)
+          Y: inherited from argument(s)
+          Z: inherited from argument(s)
+          T: inherited from argument(s)
+          E: inherited from argument(s)
+          F: inherited from argument(s)
+    A: time steps to convert (FLOAT)
+        Influence on output axes:
+          X: passed to result grid
+          Y: passed to result grid
+          Z: passed to result grid
+          T: passed to result grid
+          E: passed to result grid
+          F: passed to result grid
+    B: variable with reference time axis (FLOAT)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+    C: output precision (STRING)
+        Influence on output axes:
+          X: no influence (indicate argument limits with "[]")
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax
+let tt = t[gt=my_tax]
+ 
+! Intentional errors
+list tax_datestring (tt[L=3], tt, 5)
+list tax_datestring (tt[L=3], tt, "minutes")
+             VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes")
+             TIME     : 03-JAN-2000 00:00
+        "03-JAN-2000 00:00"
+list tax_datestring (tt[L=3], "my_tax", "minutes")
+ 
+set mode /last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_bad_bounds
+! err69_bad_bounds.jnl
+! See ticket 2170
+ 
+set mode ignore
+ 
+! time axis has a point_spacing=even attribute
+! and an invalid set of bounds.
+! caused Ferret to mis-read the time axis
+use badbounds_even.nc
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_even.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_PTSPAC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same time axis but with a different error in the bounds
+! also has a point-spacing=even attribute
+! caused Ferret to mis-read the time axis
+use badbounds_non_enclose
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_non_enclose.nc
+             TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  5.000
+11-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  5.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+! Same definition except that the coordinates are irregularly
+! spaced, no point-spacing attribute.
+use badbounds_uneven
+list var, tbox[gt=var]
+             DATA SET: ./badbounds_uneven.nc
+             TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00
+ Column  1: VAR is T (My Variable)
+ Column  2: TBOX is TBOX (axis TAX_BB_IRR)
+                      VAR   TBOX
+06-JAN-2000 00 / 1:  1.000  7.000
+13-JAN-2000 00 / 2:  2.000  5.000
+16-JAN-2000 00 / 3:  3.000  4.000
+21-JAN-2000 00 / 4:  4.000  5.000
+26-JAN-2000 00 / 5:  5.000  5.000
+31-JAN-2000 00 / 6:  6.000  5.000
+ 
+sh axis TAX_BB*
+ name       axis              # pts   start                end
+ TAX_BB_IRR TIME                6 i   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 31
+ TAX_BB_EVEN_NOENC TIME         6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ TAX_BB_PTSPAC TIME             6 r   06-JAN-2000 00:00    31-JAN-2000 00:00
+T0 = 01-JAN-2000 00:00:00
+   Axis span (to cell edges) = 30
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_const_array
+! err69_const_array.jnl
+! 5/8/2014  ACM
+! See ticket 2174
+! expressions are not allowed in constant-array definitions.
+ 
+set mode ignore
+ 
+! The code to read constant-array definitions into memory was simply doing
+! a read on each comma-separated portion of the command-line defining it.
+! Need to first determine if the buffer represents a simple constant.
+ 
+! These already returned an error as cos(1) can't be read with a Fortran read.
+list {cos(1), sin(0)}
+ 
+! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and
+! the third as {30,2000} !
+! They should be reported as syntax errors
+ 
+list {0-180, 180}
+list {0.1, 0.2, 1./5.}
+list {5*3+1, 2+3}
+ 
+! These are ok, and always have been
+list/prec=8 {-0.001, 1.23e-2, -45.e3}
+             VARIABLE : {-0.001, 1.23E-2, -45.E3}
+             SUBSET   : 3 points (X)
+ 1   / 1:     -0.001
+ 2   / 2:      0.012
+ 3   / 3: -45000.000
+ 
+set mode/last ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_multi_label_ascii
+! err69_multi_label_ascii.jnl
+! 5/2014  ACM
+! ticket 2176
+! Multi-line labels and ascii fonts.
+ 
+plot/vs/nolab {0,1},{0,1}
+ 
+ 
+label .05 .96 0 0 .12 "@CR at P4Single Line examples. Ascii font with and without escape for new color:"
+label .05 .9 0 0 .16 "@ASNo_escapes at c002good_1@c003friend_2"
+label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2"
+ 
+ 
+label .05 .65 0 0 .12 "@CR at P4Multi Line ascii examples:"
+ 
+label .05 .56 0 0 .12 "@CR at P4without escape"
+label .05 .5 0 0 .16 "@ASNo_escapes<NL>@c002good_1<NL>@c003friend_2"
+ 
+label .55 .56 0 0 .12 "@CR at P4with escape:"
+label .55 .5 0 0 .16 "@ASEscape_new_colors<NL>@c002red_1<NL>@c003green_2"
+ 
+! escape just the special characters.
+label .05 .26 0 0 .12 "@CR at P4Settings around underscores:"
+label .05 .2 0 0 .16 "hello at AS_@SRthere<NL>@c002good at AS_@SR1<NL>@c003friend at AS_@SR2"
+ 
+! escape new pen setting, not the font
+label .55 .26 0 0 .12 "@CR at P4Escape just the color changes:"
+label .55 .2 0 0 .16 "@ASEscape_color_not_font<NL>@P2 at SRred_1<NL>@P3 at SRgreen_2"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ens_badvalue
+! err69_ens_badvalue.jnl
+!
+! Datasets have _FillValue but not missing_value attributes.
+! In this case the missing data info was not correctly handled
+! when defining an ensemble.
+ 
+use maize_1.nc, maize_2.nc, maize_3.nc
+ 
+! Note the _FillValue,  flag
+sho att maize_yield
+     attributes for dataset: ./maize_3.nc
+ MAIZE_YIELD._FillValue = 9.96921E+36
+ MAIZE_YIELD.long_name =  Maize harvest 
+ MAIZE_YIELD.units = kgC.m-2.yr-1 
+ MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize 
+ensemble ens = 1,2,3
+ 
+! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3.
+list/y=29.25  MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3],  MAIZE_YIELD[m=@ngd]
+             LONGITUDE: 8W(-8) to 6W(-6)
+             LATITUDE: 29.3N
+             E: 0.5 to 3.5 (number of valid)
+ Column  1: MAIZE_YIELD[D=maize_1] is  Maize harvest (kgC.m-2.yr-1)
+ Column  2: MAIZE_YIELD[D=maize_2] is  Maize harvest (kgC.m-2.yr-1)
+ Column  3: MAIZE_YIELD[D=maize_3] is  Maize harvest (kgC.m-2.yr-1)
+ Column  4: MAIZE_YIELD[D=ENS] is  Maize harvest (# of points)
+        MAIZE_YIELD  MAIZE_YI MAIZE_Y MAIZE_YIELD
+7.75W  / 1:     ....  0.05247  0.1022   2.000
+7.25W  / 2:  0.01818  0.03588  0.0049   3.000
+6.75W  / 3: -0.00002  0.02030 -0.0139   3.000
+6.25W  / 4:     ....     ....    ....   0.000
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_by_levels
+! err69_ribbon_by_levels.jnl
+! ACM 5/19/2014
+! See ticket 2179
+! colors were not repeating after the first 10.
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_ribbon_histogram
+! err69_ribbon_histogram.jnl
+! ACM 5/24/2014
+! Histogram levels with ribbon line plots
+ 
+ 
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+ 
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+ 
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\
+2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+ 
+! linear levels, then histogram levels
+can view; set v left
+ribbon/vs/line/thick/lev=10  xpts,ypts,var
+set v right
+ribbon/vs/line/thick/lev=10h xpts,ypts,var
+ 
+GO bn_reset
+cancel mode verify
+GO err69_repl_scinot
+! err69_repl_scinot.jnl
+! ticket 2175
+! The returned number had a bunch of trailing spaces
+ 
+let a = 1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (1.E-10)
+(1.E-10)
+ 
+let a = -1.e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.E-10)
+(-1.E-10)
+ 
+let a = -1.23e-10
+say (`a`)
+ !-> MESSAGE/CONTINUE (-1.23E-10)
+(-1.23E-10)
+ 
+let a = -1.23e-2
+say (`a`)
+ !-> MESSAGE/CONTINUE (-0.0123)
+(-0.0123)
+ 
+GO bn_reset
+cancel mode verify
+GO err691_bnds_case
+! err691_bnds_case
+! 6/30/14
+! Ticket 2182 bounds variable incorrectly created with upper-cased axis name
+ 
+def ax/t tax = {1,2,4,8}
+let tval = t[gt=tax]
+can mode upcase_output
+save/clob/file=tval.nc tval
+ 
+set mode/last upcase_output
+ 
+GO bn_reset
+cancel mode verify
+GO err69_plot_vs_labs
+! err69_plot_vs_labs.jnl
+! ticket 2187: the axis labels on the dependent axis
+! for PLOT/VS is wrong.  LABX and LABY contain the labels used.
+ 
+use coads_climatology
+ 
+let a = sst[L=1]
+let b = a[x=180e:100w at ave]
+let c = a[x=150w:90w at ave]
+let d = a[x=150w:90w at ave]
+set v left;  plot/vs b,c; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+set v right; plot/vs c,b; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+can view
+plot/vs/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+ 
+set v left;  plot/trans/vs b,c; sh sym labx,laby
+LABX = "A[X=150W:90W at AVE]"
+LABY = "A[X=180E:100W at AVE]"
+set v right; plot/trans/vs c,b; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+can view
+plot/vs/trans/ribbon c,b,d; sh sym labx,laby
+LABX = "A[X=180E:100W at AVE]"
+LABY = "A[X=150W:90W at AVE]"
+ 
+GO bn_reset
+cancel mode verify
+GO err69_levels_v
+! err69_levels_v.jnl
+! Ferret ticket 2186, and LAS ticket 1598
+! the data has values in the range 300 to 500,
+! and several values over 100000.  The variance-
+! based levels returned useless levels. Changes
+! made to throw out data outside 3 std when
+! computing the mean and std dev for color levels.
+ 
+use "lev_v_bug.nc"
+shade/lev=v var2d
+ 
+! previously the computed levels spanned -8000 to 16000.
+sh sym *lev*
+LEV_TEXT = "V"
+LEV_HISTO_LEVELS = "1.1,1.2,1.6,1.9,2.4,2.5,3.8,5.4,10.2,13.6,14.9"
+LEV_MIN = "-1.E+34"
+LEV_MAX = "5.0000E+32"
+LEV_NUM = "21"
+LEV_DEL = "5.0000E+32"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_letd_dsetnum
+! err69_letd_dsetnum.jnl
+!  Ticket 2189. Previously the grave-accent expression didn't get
+!  translated, and the let command failed.
+ 
+use coads_climatology
+let/d=`sst,r=dsetnum` a = 1
+ !-> DEFINE VARIABLE/d=1 a = 1
+sh dat
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ ------------------------------
+ A[D=coads_climatology] = 1
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_long_string_to_xml
+! err69_long_string_to_xml.jnl
+! ticket 2190  8-8-2014
+! previously the string was cut off at 512 characters. For this example
+! it was in the middle of the code AAAAAAAAAAAA
+!
+ 
+list/clobber/file="out.xml"/nohead/norow 1
+LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC2004 [...]
+LET status = list_value_xml ("mytag", longstring, 1, "out.xml")
+LOAD status
+ 
+sp cat out.xml
+   1.000
+<mytag><![CDATA[Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC200406 [...]
+ 
+GO bn_reset
+cancel mode verify
+GO err69_fill_trans
+! err69_fill_trans.jnl
+! ticket 2196. Visible only if bounds-checking is turned on.
+! 9/22/2014
+ 
+DEFINE AXIS/x=1:15:1 xaxis
+let var =  {1,2,3,,,,,,,4,,5,6,7,8}
+LET myvar = var[gx=xaxis at asn]
+ 
+list myvar
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             SUBSET   : 15 points (X)
+ 1    /  1:  1.000
+ 2    /  2:  2.000
+ 3    /  3:  3.000
+ 4    /  4:   ....
+ 5    /  5:   ....
+ 6    /  6:   ....
+ 7    /  7:   ....
+ 8    /  8:   ....
+ 9    /  9:   ....
+ 10   / 10:  4.000
+ 11   / 11:   ....
+ 12   / 12:  5.000
+ 13   / 13:  6.000
+ 14   / 14:  7.000
+ 15   / 15:  8.000
+list myvar[x=6 at fnr:2]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 2 pts)
+        ....
+ 
+! This caused attempt to load variable at index i = -4
+list myvar[x=6 at fnr:10]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (nearest-filled by 10 pts)
+          3.000
+ 
+! Likewise the way @FAV is computed, this caused Ferret
+! to try to get data at i=-3
+list myvar[x=6 at fav:18]
+             VARIABLE : VAR[GX=XAXIS at ASN]
+             X        : 6 (ave-filled by 18 pts)
+          4.500
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_load_big_grid
+! err69_load_big_grid
+! ticket 1758
+! error about "a negative number of words requested... grid too large"
+! in fact all large grids misreports size.  Now computations are done
+! in real numbers and in block not word sizes.
+ 
+set mode ignore
+ 
+def axis/x=1:360:1 xaxis
+def axis/y=1:180:1 yaxis
+def axis/z=1:20:1 zaxis
+ 
+! this gave the error about "a negative number of words requested... grid too large"
+define axis/t=1-jan-2000:1-jan-2005:1/units=days  longtime
+let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime]
+sh grid bigvar
+    GRID (G004)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              1828 r   01-JAN-2000 00:00    01-JAN-2005 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+! also was an incorrect size.
+define axis/t=1-jan-2000:1-jan-2010:1/units=days  longtime
+sh grid bigvar
+    GRID (G004)
+ name       axis              # pts   start                end
+ XAXIS     X                  360 r   1                    360
+ YAXIS     Y                  180 r   1                    180
+ ZAXIS     Z                   20 r   1                    20
+ LONGTIME  TIME              3654 r   01-JAN-2000 00:00    01-JAN-2010 00:00
+ normal    E
+ normal    F
+load bigvar
+ 
+cancel mode ignore
+ 
+GO bn_reset
+cancel mode verify
+GO err69_write_attribute
+! err69_write_attribute.jnl
+! Bug 1863
+ 
+use gt4d011.cdf
+sh grid temp
+    GRID PS3DT2
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+ PSYT      LATITUDE           100 i   28.836S              48.568N
+ PSZT      DEPTH (m)           27 i-  5                    3824
+ TIME1     TIME                25 r   17-AUG-1982 12:00    10-JAN-1983 12:00
+ normal    E
+ normal    F
+let a = temp[x=@ave,y=@ave,L=1]
+ 
+! The attribute we ask not to write is not written for this variable
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (PSZT).point_spacing
+save/q/clob/file="a.nc"/bounds a
+sp ncdump -h a.nc | grep -i "`a,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double A(TIME1, PSZT1_10) ;
+ 
+! But it was being written for this one. It should not.
+let b =  temp[x=@ave,y=@ave,L=1,d=1]
+save/q/clob/file="a.nc"/bounds b
+sp ncdump -h a.nc | grep -i "`b,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double B(TIME1, PSZT1_10) ;
+ 
+! A variable that depends on more than one dataset.
+use coads_climatology
+let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2]
+save/q/clob/file="a.nc"/bounds c
+sp ncdump -h a.nc | grep -i  "`c,r=zaxis`"
+ !-> sp ncdump -h a.nc | grep -i  "PSZT"
+	PSZT1_10 = 10 ;
+	double PSZT1_10(PSZT1_10) ;
+		PSZT1_10:units = "meters" ;
+		PSZT1_10:positive = "down" ;
+		PSZT1_10:standard_name = "depth" ;
+		PSZT1_10:bounds = "PSZT1_10_bnds" ;
+	double PSZT1_10_bnds(PSZT1_10, bnds) ;
+	double C(PSZT1_10) ;
+ 
+can data/all
+can var/all
+ 
+! When there are two datasets with the same axis name but different depths,
+! the second axis name is changed internally.
+ 
+DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000}
+ 
+LET temp = z[gz=zzdep]
+save/clobber/file=aa.nc temp
+save/clobber/keep/file=bb.nc temp[k=1:15]
+can var/all
+can axis zzdep
+ 
+use aa
+use bb
+set data 1
+ 
+show att (`temp,r=zaxis`)
+ !-> show att (ZZDEP)
+     attributes for dataset: ./aa.nc
+ (ZZDEP).point_spacing = uneven 
+ (ZZDEP).axis = Z 
+ (ZZDEP).bounds = ZZDEP_bnds 
+ (ZZDEP).positive = down 
+ (ZZDEP).standard_name = depth 
+ (ZZDEP).orig_file_axname = ZZDEP 
+ 
+let a = temp[d=1,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+set data 2
+let a = temp[d=2,x=@ave,y=@ave]
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP1).point_spacing
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP1
+	ZZDEP1 = 15 ;
+	double ZZDEP1(ZZDEP1) ;
+		ZZDEP1:axis = "Z" ;
+		ZZDEP1:bounds = "ZZDEP1_bnds" ;
+		ZZDEP1:positive = "down" ;
+		ZZDEP1:standard_name = "depth" ;
+	double ZZDEP1_bnds(ZZDEP1, bnds) ;
+	double A(ZZDEP1) ;
+ 
+let a = temp[d=2,gz=temp[d=1]]
+ 
+can att/output (`a,r=zaxis`).point_spacing
+ !-> can att/output (ZZDEP).point_spacing
+ 
+save/clobber/file=a.nc a
+sp ncdump -h a.nc | grep -i `a,r=zaxis`
+ !-> sp ncdump -h a.nc | grep -i ZZDEP
+	ZZDEP = 20 ;
+	double ZZDEP(ZZDEP) ;
+		ZZDEP:axis = "Z" ;
+		ZZDEP:bounds = "ZZDEP_bnds" ;
+		ZZDEP:positive = "down" ;
+		ZZDEP:standard_name = "depth" ;
+	double ZZDEP_bnds(ZZDEP, bnds) ;
+	double A(ZZDEP) ;
+ 
+sp rm aa.nc bb.nc
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_status_errmsgs
+! err69_isready_status_errmsgs
+! ticket 2197
+!  RETURN=isready or RETURN=status caused error reporting
+!  to go silent.
+ 
+set mode ignore
+list a
+say `a,return=isready`
+ !-> MESSAGE/CONTINUE 0
+0
+say `c,return=status`
+ !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C
+UNKNOWN VARIABLE: C
+list a
+list b
+shade a
+ 
+set mode/last ignore
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_countervar_context
+! err69_countervar_context.jnl
+! ACM 10/3/2014
+! Ticket 2200.  Context from SET REGION should not
+! apply in named-repeat loop.  The loop would run,
+! but returned values of 0.
+ 
+let a = b
+set region/i=20:30
+repeat/name=b/range=1:3 (say `a`)
+!-> REPEAT: B:1
+ !-> MESSAGE/CONTINUE 1
+1
+!-> REPEAT: B:2
+ !-> MESSAGE/CONTINUE 2
+2
+!-> REPEAT: B:3
+ !-> MESSAGE/CONTINUE 3
+3
+ 
+can region
+ 
+GO bn_reset
+cancel mode verify
+GO err69_label_backspace
+! err69_label_backspace
+! Ticket 2203:  \\ before a character backspaces before
+! making the character. This broke in the 64-bit versions.
+ 
+plot/vs/nolab {0,1},{0,1}
+label .5 .5 0 0 1 "El Nin\\^@MA45 at SRo\!"
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_and_regridding
+! err69_isready_and_regridding.jnl
+! Ticket 2204: A `var,return=isready` sends Ferret into a hanged
+! state after other contexts have been defined
+ 
+can dat/all
+ 
+! create & load a file with a Gregorian time axis
+def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135}
+let a = t[gt=tax_g]
+save/clob/file=a.nc a
+can var a
+can ax tax_g
+use a.nc
+ 
+! create a variable on a Julian time axis
+def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j
+let b = t[gt=tax_j]
+ 
+! put the Gregorian data on the Julian axis
+let a2 = a
+let a2_on_b = a2[gt=b]
+ 
+! create a climatological axis (Julian)
+def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75}
+ 
+let b_one = missing(1+0*b,1)      !set everything to 1
+let nyr = b_one[gl=tax_jc at modsum] !# years that include each month
+ 
+! Execute some commands which put things into context storage
+ 
+say `a2_on_b,r=title`
+ !-> MESSAGE/CONTINUE A2[GT=B]
+A2[GT=B]
+say `nyr[l=1]`
+ !-> MESSAGE/CONTINUE 23
+23
+ 
+! This got us into a weird hanged state
+IF `a2_on_b,r=isready` THEN
+ !-> IF 1         THEN
+ENDIF
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_and_uvar_regrid
+! err69_vtree_and_uvar_regrid.jnl
+! Ticket 2206: This lead to a crash.
+! 10/9/2014
+ 
+let a = t[gt=1:2:1]
+let b2 = a
+let c = b2[gt=a]
+GO bn_vtree.sub c
+/TREE=ALL
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=USER
+   C = B2[GT=A]
+     B2 = A
+       A = T[GT=1:2:1]
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+ 
+GO bn_reset
+cancel mode verify
+GO err69_vtree_cancel_axis
+! err69_vtree_cancel_axis
+! Ticket 2201: After a return=isready,
+! cannot cancel the axis used by the var
+! 10-Oct-2014
+ 
+define axis/x=0:360:1 xax1
+define axis/x=0:360:10 xax2
+ 
+let a = x[gx=xax1]
+say `a,return=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX1]
+X[GX=XAX1]
+ 
+let b = a[gx=xax2]
+say `b,return=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+cancel var a b
+cancel axis xax1
+cancel axis xax2
+ 
+ 
+ 
+GO bn_reset
+cancel mode verify
+GO err69_isready_bugs
+! err69_isready_bugs.jnl
+! Tickets 2201 and 2215
+ 
+! ticket 2201: isready operation meant we couldn't cancel the second axis
+ 
+def ax/x=0:360:1 xax_isready_1
+def ax/x=0:360:10 xax_isready_2
+let a = x[gx=xax_isready_1]
+say `a,r=title`
+ !-> MESSAGE/CONTINUE X[GX=XAX_ISREADY_1]
+X[GX=XAX_ISREADY_1]
+let b = a[gx=xax_isready_2]
+load b
+say `b,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+ 
+can var a
+can axis xax_isready_1
+can var b
+can axis xax_isready_2
+ 
+! Ticket 2215, only with an unreleased Ferret; the first fix to 2201.
+ 
+let a = x[gx=1:3:1]
+let b = a - a[gx=a]
+let c = 1
+let/unit="m" f = b*c
+say `f,r=isready`
+ !-> MESSAGE/CONTINUE 1
+1
+ 
+say `f,r=unit`
+ !-> MESSAGE/CONTINUE m
+m
+*** Running test: bn_append_dsg.jnl
+! bn_append_dsg.jnl
+!From SOCAT 3: appending to a dsg file where the new variable is on the obs
+! dimension. THe file has no coordinate variable, and we want to keep it that way.
+! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase,
+! do not write a coordinate variable.
+!
+! Contains the metadata variables, global attributes, and incoming variables.
+! Where we recompute some of the incoming variables and append them to the file,
+! the values in the file are replaced.
+!
+!  Argument is a file name; the single-cruise dsg file from the data entry
+!
+! We append more variables to the file, using the same obs dimension.
+ 
+sp rm test_save_dsg.nc
+sp cp test_save_dsg_in.nc test_save_dsg.nc
+ 
+use test_save_dsg.nc
+ 
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+ 
+save/quiet/append/file=test_save_dsg.nc lon360
+ 
+! The longitude and lon360 variables should have the same lowercase (obs) dimension.
+ 
+sp ncdump -h test_save_dsg.nc
+netcdf test_save_dsg {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:History = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "CF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+}
+*** Running test: bn_global_atts.jnl
+ ! NOAA/PMEL TMAP
+ ! FERRET v6.91 (beta)
+ ! Linux 2.6.32-431.5.1.el6.x86_64 64-bit - 04/07/14
+ !  7-Apr-14 16:41
+ 
+sp cp global.nc  global_copy.nc
+use global_copy.nc
+! Lon in 0-360
+let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude
+define attribute/output lon360.ioos_category = "Location"
+define attribute/output lon360.standard_name = "Longitude"
+define attribute/output lon360.history = "added to test_save_dsg.nc"
+save/quiet/append/file=global_copy.nc lon360
+sp ncdump -h global.nc
+netcdf global {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventions" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+sp ncdump -h global_copy.nc
+netcdf global_copy {
+dimensions:
+	trajectory = 1 ;
+	string_length = 33 ;
+	obs = 25 ;
+	char_length = 1 ;
+variables:
+	char expocode(trajectory, string_length) ;
+		expocode:cf_role = "trajectory_id" ;
+	char cruiseName(trajectory, string_length) ;
+	char vesselName(trajectory, string_length) ;
+	char scienceGroup(trajectory, string_length) ;
+	char origDataRef(trajectory, string_length) ;
+	char socatDOI(trajectory, string_length) ;
+	char socatDOIHRef(trajectory, string_length) ;
+	double rowSize(trajectory) ;
+		rowSize:sample_dimension = "obs" ;
+		rowSize:long_name = "Number of Observations" ;
+	double longitude(obs) ;
+		longitude:missing_value = -1.e+34 ;
+		longitude:_FillValue = -1.e+34 ;
+		longitude:units = "degrees_east" ;
+		longitude:long_name = "longitude" ;
+		longitude:standard_name = "longitude" ;
+		longitude:ioos_category = "Location" ;
+	double LON360(obs) ;
+		LON360:missing_value = -1.e+34 ;
+		LON360:_FillValue = -1.e+34 ;
+		LON360:long_name = "longitude" ;
+		LON360:units = "degrees_east" ;
+		LON360:ioos_category = "Location" ;
+		LON360:standard_name = "Longitude" ;
+		LON360:history = "added to test_save_dsg.nc" ;
+
+// global attributes:
+		:history = "CruiseDsgNcFile 1.0FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:featureType = "Trajectory" ;
+		:Conventions = "Some other conventionsCF-1.6" ;
+		:geospatial_lon_min = -92.77 ;
+		:geospatial_lon_max = -92.74 ;
+		:geospatial_lat_min = 20.04 ;
+		:geospatial_lat_max = 29.07 ;
+		:time_coverage_start = "2006-06-10T23:48:00Z" ;
+		:time_converage_end = "2006-06-11T00:12:00Z" ;
+}
+ 
+! This dataset has global attributes history and Conventions that include
+! a Ferret version and CF version that Ferret will replace.
+ 
+sp ncgen -o anew_global.nc anew_global.cdl
+use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.71    9-May-14 
+ ..Conventions = Existing conventions note, CF-1.0 
+let var = 8
+save/append/file=anew_global.nc  var
+can dat/all; use anew_global.nc
+sh att .
+     attributes for dataset: ./anew_global.nc
+ ..history = Subset of etopo20,
+ FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14 
+ ..Conventions = Existing conventions note, , CF-1.6 
+ 
+ 
+ 
+*** Running test: bn_conventions_history.jnl
+! bn_conventions_history.jnl
+! ticket 2169:
+! Write conventions CF-1.6
+! When appending to the Conventions and history
+! attribute, add the new stuff with a comma and newline.
+ 
+sp cp conventions_history_in.nc conventions_history.nc
+use conventions_history
+!
+!  The existing global attributes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the file 
+ ..Conventions = Conventions for variables named V2 
+!
+! Write to the file
+let v3 = v1+v2
+save/append/file=conventions_history.nc v3
+can dat/all; use conventions_history
+!
+! The new attibutes
+sh att .
+     attributes for dataset: ./conventions_history.nc
+ ..history = The history of the fileFERRET V6.93 (PyFerret 1.1.0)  5-Nov-14 
+ ..Conventions = Conventions for variables named V2CF-1.6 
+*** Running test: bn_center_key_labels.jnl
+! bn_center_key_labels
+!  6/2014
+!
+! Arguments to /KEY qualifier on color plots
+! /CENTERLABEL  for label between lines on colorbar
+! /HORIZONTAL   for horizontal key
+ 
+use levitus_climatology.cdf
+shade/lev=10/key=cent,horiz temp
+fill/lev=10v/key=cent temp
+ 
+! Ribbon plots and all three keywords: centerlab, horizontal, continuous
+let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\
+16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35}
+let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\
+9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\
+8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\
+6.66,6.56,7.36,6.52}
+let/title=colors  var =  {\
+1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\
+17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\
+5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5}
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var
+ 
+! Automatically restore non-continuous key, non-center, vertical
+RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var
+ 
+! Polygons: the polymark script needs multiple key qualifiers to be in quotes.
+use coads_climatology
+def axis/x=0:360:5 xq
+def axis/y=-90:90:4 yq
+let fsst =  sst[l=1,gx=xq,gy=yq]
+ 
+let lon = xsequence(x[gx=xq] + 0*y[gy=yq])
+let lat = xsequence(0*x[gx=xq] + y[gy=yq])
+shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst  ! set up
+ 
+go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4
+ 
+can data coads_climatology
+ 
+! Automatically restore regular handling of levels
+shade temp
+ 
+*** Running test: bn_wgt_transform.jnl
+! bn_wgt_transform.jnl  test new @WGT transform,
+! returns weights used in the equiv. average or integral transform
+! ACM 7/2014
+ 
+! Define an XYT grid
+ 
+def axis/x=2:360:2/units=degrees_east x2
+def axis/y=-89:89:2/units=degrees_north y2
+let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg]
+let weights= var[x=@wgt,y=@wgt,t=@wgt]
+ 
+! Varies in y with latitude correction
+shade/l=1 weights
+ 
+! Sum of xy transform is the surface area of the earth, meters
+let weights= var[x=@wgt,y=@wgt]
+list/l=1 weights[i=@sum,j=@sum]
+             VARIABLE : VAR[X=@WGT,Y=@WGT]
+             LONGITUDE: 1E to 1E(361) (XY summed)
+             LATITUDE : 90S to 90N (XY summed)
+             TIME     : 16-JAN 12:00
+          5.101E+14
+ 
+! Varies in T because of irregular t axis
+shade/x=1 weights
+ 
+ 
+! The result t=@WGT returned in seconds
+let mywt = var[t=@wgt]
+ 
+let secperday = 24*3600
+list/x=1/y=1 mywt, mywt/secperday
+             TIME: 01-JAN 00:00 to 31-DEC 05:49
+             LONGITUDE: 2E
+             LATITUDE: 1N
+ Column  1: MYWT is VAR[T=@WGT]
+ Column  2: EX#2 is MYWT/SECPERDAY
+                         MYWT   EX#2
+16-JAN 12      /  1:  2678400.  31.00
+15-FEB 02      /  2:  2440152.  28.24
+15-MAR 17      /  3:  2678400.  31.00
+15-APR 05      /  4:  2592000.  30.00
+15-MAY 17      /  5:  2678400.  31.00
+15-JUN 05      /  6:  2592000.  30.00
+15-JUL 17      /  7:  2678400.  31.00
+15-AUG 17      /  8:  2678400.  31.00
+15-SEP 05      /  9:  2592000.  30.00
+15-OCT 17      / 10:  2678400.  31.00
+15-NOV 05      / 11:  2592000.  30.00
+15-DEC 17      / 12:  2678400.  31.00
+ 
+! Test reusing results. (ticket 2183)
+use gt4d011.cdf
+! The last value is a partial grid cell
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+ 
+! Now load the result over a larger region
+list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 9 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:  10.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:  10.00
+ 55    / 6:  10.00
+ 65    / 7:  10.00
+ 75    / 8:  10.00
+ 85    / 9:   2.00
+ 
+! This finds the previous result in memory - needs to
+! reuse the correct one.
+ 
+list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt]
+             VARIABLE : TEMPERATURE (deg. C)
+                        weights for avg,int on Z
+             FILENAME : gt4d011.cdf
+             SUBSET   : 5 points (DEPTH (m))
+             LONGITUDE: 130.5W
+             LATITUDE : 1.5N
+             TIME     : 29-AUG-1982 16:00
+             130.5W 
+             100
+ 5     / 1:   2.00
+ 15    / 2:  10.00
+ 25    / 3:  10.00
+ 35    / 4:  10.00
+ 45    / 5:   3.50
+*** Running test: bn_show_outfile.jnl
+! bn_show_outfile
+! Adding tests for SHOW/OUTFILE=
+! Previously only tests when SHOW/XML/OUTFILE=
+!  Bugs in SHOW/OUTFILE reported in ticket 2194
+!  8/18/2014
+ 
+! test various combinations of /append and /clobber
+ 
+!can mode verify
+ 
+! show axis/outfile
+ 
+ 
+sho ax/clobber/outfile=a.txt month_irreg
+sho ax/clobber/outfile=a.txt month_irreg
+ 
+SAY ---------------- Just axis month_irreg
+---------------- Just axis month_irreg
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ 
+show axis/append/outfile=a.txt PS*
+ 
+SAY ---------------- appending all axes starting with PS
+---------------- appending all axes starting with PS
+sp cat a.txt
+ name       axis              # pts   start                end
+ MONTH_IRREG TIME              12mi   16-JAN 12:00         15-DEC 17:49
+T0 = 01-JAN-0000 00:00:00
+   Axis span (to cell edges) = 365.2425 (modulo length = axis span)
+ name       axis              # pts   start                end
+ PSXT      LONGITUDE          160mr   130.5E               70.5W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSXU      LONGITUDE          160mr   131E                 70W
+   Axis span (to cell edges) = 160 (modulo length = 360)
+ PSYT      LATITUDE           100 i   28.836S              48.568N
+   Axis span (to cell edges) = 80.00004
+ PSYU      LATITUDE           100 i   27.672S              50N
+   Axis span (to cell edges) = 80.2682
+ PSZT      DEPTH (m)           27 i-  5                    3824
+   Axis span (to cell edges) = 4149
+ PSZW      DEPTH (m)           27 i-  10                   4149
+   Axis span (to cell edges) = 4144
+ 
+! show grid/outfile
+ 
+use coads_climatology
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just the grid of sst
+---------------- Just the grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME      TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+! show var/outfile
+ 
+use coads_climatology
+let two = 2
+let myvar = sst*2
+show var/clobber/outfile=a.txt myvar, two
+ 
+SAY ---------------- show var output from two user vars
+---------------- show var output from two user vars
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+cancel var/all
+ 
+! show data/outfile
+ 
+show data/append/outfile=a.txt
+ 
+SAY ---------------- appending show data
+---------------- appending show data
+sp cat a.txt
+ MYVAR = SST*2
+ TWO = 2
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+! combinations of /append and /clobber
+ 
+show data/clobber/outfile=a.txt
+show data/clobber/outfile=a.txt
+ 
+SAY ---------------- Just show data, two show data/clobber commands in a row
+---------------- Just show data, two show data/clobber commands in a row
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show grid/clobber/outfile=a.txt sst
+ 
+SAY ---------------- Just grid of sst
+---------------- Just grid of sst
+sp cat a.txt
+    GRID GSQ1
+ name       axis              # pts   start                end
+ COADSX    LONGITUDE          180mr   21E                  19E(379)
+ COADSY    LATITUDE            90 r   89S                  89N
+ normal    Z
+ TIME      TIME                 3mr   16-JAN 06:00         17-MAR 02:58
+ normal    E
+ normal    F
+ 
+use coads_climatology
+use levitus_climatology
+ 
+show data/clobber/outfile=a.txt 1
+ 
+SAY ---------------- Just dataset 1
+---------------- Just dataset 1
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+ 
+show data/append/outfile=a.txt levitus_climatology
+ 
+SAY ---------------- appending datset 2 by name
+---------------- appending datset 2 by name
+sp cat a.txt
+     currently SET data sets:
+    1> ./coads_climatology.cdf
+ name     title                             I         J         K         L         M         N
+ SST      SEA SURFACE TEMPERATURE          1:180     1:90      ...       1:3       ...       ...
+ 
+     currently SET data sets:
+    2> ./levitus_climatology.cdf  (default)
+ name     title                             I         J         K         L         M         N
+ TEMP     TEMPERATURE                      1:160     1:90      1:1       ...       ...       ...
+ 
+show grid/clobber/outfile=a.txt PS3*
+ 
+SAY ---------------- only showing all grids starting with PS3
+---------------- only showing all grids starting with PS3
+sp cat a.txt
+      PS3DT
+      PS3DU
+      PS3DW
+ 
+SAY ---------------- tests sending output of vtree to a file
+---------------- tests sending output of vtree to a file
+GO bn_vtree_outfile
+! bn_tree_outfile.jnl
+ 
+! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE
+ 
+CANCEL DATA/ALL
+! pure abstract variable -- no dataset
+let a = 1
+ 
+!
+show var/tree/outfile=a.txt/clobber a
+show var/tree/outfile=a.txt/clobber a
+sp cat a.txt
+   A = 1
+ 
+let b = 1
+let c = SIN(b)
+show var/tree/outfile=a.txt/clobber c
+sp cat a.txt
+   C = SIN(B)
+     B = 1
+ 
+! create dummy datasets so we'll have named file variables to play with
+let fv1 = 1
+let fvx = x[i=1:3]
+let fvz = Z[k=1:3]
+SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz
+SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1
+SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1
+CAN VAR/ALL
+use  my_file_vars, other_file_vars, another_file_vars
+set data 1
+ 
+! ================
+ 
+! more pure abstract variables
+let a = 1
+let b = 1
+let c = SIN(b)
+go bn_vtree_outfile.sub c
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+c is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+   in default dataset my_file_vars
+   C = SIN(B)
+     B = 1
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1
+   FV1[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+a is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   A = FV1 + FVX
+     FV1
+     FVX
+   in default dataset my_file_vars
+   A = FV1 + FVX
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset my_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1
+     FV1[d=other_file_var]
+   in default dataset other_file_vars
+   A = FV1[D=1] - FV1[D=2]
+     FV1[d=my_file_var]
+     FV1
+********************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: V[D=NOEXIST]
+************************
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   V[D=NOEXIST] ??                           <== UNKNOWN DATASET ******
+   V[D=NOEXIST]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN DATASET: NOVAR[D=NODSET]
+************************
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   in default dataset my_file_vars
+   NOVAR[D=NODSET] ??                           <== UNKNOWN DATASET ******
+   NOVAR[D=NODSET]  (unknown dataset)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   in default dataset my_file_vars
+   B = NOEXIST
+     NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+RESHAPE(fvx,fvz) is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FVX
+   FVZ
+   FVX[d=my_file_vars]
+   FVZ[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+     FV1
+       FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]
+   FV1[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1z is ready and AVAILABLE
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+     FV1
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   FV1[d=my_file_vars]
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST
+************************
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX
+       NOEXIST   (unknown auxiliary variable)
+   NOEXIST  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+         FVZ
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX
+     NOEXIST[GZ(DEPTH)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       DEPTH = Z[G=FVZ]+ 0*FVZ[K=1]
+   NOEXIST[GZ(DEPTH)=ZPTS]  (unknown variable)
+   FVZ[d=my_file_vars]
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]
+************************
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+     FVX
+   in default dataset my_file_vars
+   FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX
+     NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ??                           <== UNKNOWN VARIABLE ******
+       UNKNOWN_AUX   (unknown auxiliary variable)
+   NOEXIST[GZ(UNKNOWN_AUX)=ZPTS]  (unknown variable)
+   UNKNOWN_AUX  (unknown auxiliary variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fv1 is ready and AVAILABLE
+************************
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+     FV1[d=my_file_var]
+     FV1[d=other_file_var]
+     FV1[d=another_file_var]
+   in default dataset MY_AGG
+   FV1   (aggregate variable)
+ 
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+fvx is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=my_file_var]
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=other_file_var]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+       FV1[d=another_file_var]
+   in default dataset MY_UVAR_AGG
+   FVX   (aggregate variable)
+     FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+     FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+ 
+   FVX[d=my_file_vars]
+   FV1[d=other_file_vars]
+   FV1[d=another_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ILLEGAL RECURSIVE VARIABLES: P1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = P1 + S3
+           P1 =   *** WARNING: RECURSIVE DEFINITION.  See above
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S3  (unknown variable)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: S1
+************************
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   in default dataset MY_UVAR_AGG
+   P0 = S1 + P1
+     S1 ??                           <== UNKNOWN VARIABLE ******
+     P1 = S2 + P2
+       S2 ??                           <== UNKNOWN VARIABLE ******
+       P2 = S3 + P3
+         S3 ??                           <== UNKNOWN VARIABLE ******
+         P3 = S1 + S3
+           S1 ??                           <== UNKNOWN VARIABLE ******
+           S3 ??                           <== UNKNOWN VARIABLE ******
+   S1  (unknown variable)
+   S2  (unknown variable)
+   S3  (unknown variable)
+   S1  (unknown variable)
+   S3  (unknown variable)
+   in default dataset my_file_vars
+   FV = FV1 + FV1 + FV1
+   in default dataset MY_UVAR_AGG
+   FV = FV1 + FV1 + FV1
+     FV1   (aggregate variable)
+   in default dataset other_file_vars
+   UV = FVX + FVX + FVX
+     FVX = FV1 + X[GX=FVX[D=1],I=1:3]
+   in default dataset MY_UVAR_AGG
+   UV = FVX + FVX + FVX
+     FVX   (aggregate variable)
+       FVX[d=other_file_var] = FV1 + X[GX=FVX[D=1],I=1:3]
+       FVX[d=another_file_var] = 2*FV1 + X[GX=FVX[D=1],I=1:3]
+***************************
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v2 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+         FV1[d=my_file_var]
+         FV1[d=other_file_var]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V2 = V1 + B + A + A
+     V1 = A  + B + B^2
+       A = FV1[D=1] - FV1[D=2]
+       B = C
+         C = 1
+     B =  (defined above)
+     A =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+v3 is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+       FV1[d=my_file_var]
+       FV1[d=other_file_var]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   in default dataset MY_UVAR_AGG
+   V3 = A + V1 + B + A + A
+     A = FV1[D=1] - FV1[D=2]
+     V1 = A  + B + B^2
+       A =  (defined above)
+       B = C
+         C = 1
+     B =  (defined above)
+   FV1[d=my_file_vars]
+   FV1[d=other_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN VARIABLE: F
+************************
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+       FV1[d=my_file_var]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   FVX[d=my_file_var]
+   in default dataset MY_UVAR_AGG
+   D = B + C
+     B = FV1[D=MY_FILE_VARS]
+     C = 1
+   A = F
+     F ??                           <== UNKNOWN VARIABLE ******
+   NOEXIST ??                           <== UNKNOWN VARIABLE ******
+   E = 1
+   F  (unknown variable)
+   FV1[d=my_file_vars]
+   NOEXIST  (unknown variable)
+   FVX[d=my_file_vars]
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is UNKNOWN GRID: A[G=NOEXIST]
+************************
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   in default dataset MY_UVAR_AGG
+   B = A[G=NOEXIST]
+     A[G=NOEXIST]   (unknown grid)
+   A[G=NOEXIST]  (unknown grid)
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[X=45S]
+************************
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   C = A[X=45S]
+     A[X=45S]   *** WARNING: ERROR IN DEFINITION
+   A[X=45S]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[I=1,,J=2]
+************************
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   D = A[I=1,,J=2]
+     A[I=1,,J=2]   *** WARNING: ERROR IN DEFINITION
+   A[I=1,,J=2]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+the problem is ERROR IN EXPRESSION: A[P=1]
+************************
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   in default dataset MY_UVAR_AGG
+   E = A[P=1]
+     A[P=1]   *** WARNING: ERROR IN DEFINITION
+   A[P=1]   *** WARNING: SYNTAX ERROR
+/TREE=ALL
+/TREE=USER
+/TREE=FILE
+f is ready and AVAILABLE
+************************
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   F = A[I=10]
+     A = I[I=1:5]
+   in default dataset MY_UVAR_AGG
+   A = FVZ.LONG_NAME[D=1]
+   in default dataset MY_UVAR_AGG
+   A = ..HISTORY[D=1]
+ 
+ 
+*** Running test: bn_date1900_array.jnl
+! bn_date1900_array.jnl
+! Let date1900 accept an array of date strings, returning a list
+! of coordinate values, days since 1-jan-1900.
+ 
+ 
+sh func/details date1900
+DATE1900(formatted date)
+    Convert date strings into Julian days since 1-Jan-1900
+        Axes of result:
+          X: inherited from argument(s)
+          Y: NORMAL (no axis)
+          Z: NORMAL (no axis)
+          T: NORMAL (no axis)
+          E: NORMAL (no axis)
+          F: NORMAL (no axis)
+    formatted date: dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00") (none) (STRING)
+        Influence on output axes:
+          X: passed to result grid
+          Y: no influence (indicate argument limits with "[]")
+          Z: no influence (indicate argument limits with "[]")
+          T: no influence (indicate argument limits with "[]")
+          E: no influence (indicate argument limits with "[]")
+          F: no influence (indicate argument limits with "[]")
+ 
+! Function always worked just on one date string.
+list date1900("01-jan-2001")
+             VARIABLE : DATE1900("01-jan-2001")
+          36890.
+ 
+ 
+! Now the argument can be an array
+let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"}
+list date1900(datestrings)
+             VARIABLE : DATE1900(DATESTRINGS)
+             SUBSET   : 3 points (X)
+ 1   / 1:  36890.
+ 2   / 2:  36891.
+ 3   / 3:  37465.
+ 
+def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings)
+list t[gt=taxis]
+             VARIABLE : T
+                        axis TAXIS
+             SUBSET   : 3 points (TIME)
+ 01-JAN-2001 00 / 1:  36890.
+ 02-JAN-2001 00 / 2:  36891.
+ 30-JUL-2002 00 / 3:  37465.
+ 
+*** Running test: bn_spawn_size.jnl
+! bn_spawn_size.jnl
+! Return the size of the result of a spawn, not
+! the nominalabstract axis length.
+ 
+! ticket 981
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+list files
+             VARIABLE : {SPAWN:"ls *cdf*.jnl"}
+             SUBSET   : 8 points (X)
+ 1   / 1:"bn_cdf_errmsg.jnl"      
+ 2   / 2:"bn_cdf.jnl"             
+ 3   / 3:"bn_cdf_keepax.jnl"      
+ 4   / 4:"bn_netcdf4.jnl"         
+ 5   / 5:"err490_cdf_childax.jnl" 
+ 6   / 6:"err491_cdf_childax.jnl" 
+ 7   / 7:"err65_read_epic_cdf.jnl"
+ 8   / 8:"err667_5d_netcdf.jnl"   
+say `files,return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+ 
+! Evaluate size without loading the variable first
+let datfiles = {spawn:"ls *.dat"}
+say `datfiles,return=isize`
+ !-> MESSAGE/CONTINUE 36
+36
+ 
+! expression syntax
+say `{spawn:"ls xml*.jnl"},return=isize`
+ !-> MESSAGE/CONTINUE 3
+3
+list {spawn:"ls xml*.jnl"}
+             VARIABLE : {SPAWN:"ls xml*.jnl"}
+             SUBSET   : 3 points (X)
+ 1   / 1:"xml_header_script.jnl"
+ 2   / 2:"xml_use_coads.jnl"    
+ 3   / 3:"xml_use_numstring.jnl"
+ 
+! Test variables based on output of a spawn.
+! These already worked correctly, has a grid-changing function.
+ 
+LET filesets = xcat({spawn:"ls *.nc"}, {spawn:"ls *.jnl"})
+say `filesets, return=isize`
+ !-> MESSAGE/CONTINUE 827
+827
+ 
+let files = {spawn:"ls *cdf*.jnl"}
+let name_len = strindex(files, ".sub")
+say `name_len, return=isize`
+ !-> MESSAGE/CONTINUE 8
+8
+*** Running test: bn_polygon_log.jnl
+! bn_polygon_log.jnl
+! polygon plots on a log axis need tests
+ 
+let xsqr = YSEQUENCE({0,.1,.1,0})
+let ysqr = YSEQUENCE({0,0,.1,.1})
+let xpts = cos(x/10) + 2
+let ypts = x/10+1
+ 
+! Polygon plot
+ 
+set view ul
+polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10
+ 
+! Poly/vlog and /hlog
+! (known bug: Whats up with the colorbar labels?)
+set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10
+set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10
+set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10
+ 
+! These are errors - log of negative values on axis
+ 
+set mode ignore
+ 
+let ybad = x/10 - 1
+let xbad = cos(x/10) + 0.8
+ 
+can view
+polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10
+ 
+poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10
+poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10
+ 
+set mode/last ignore
 *** Running test: bn_all_ef.jnl
 SET MODE VERIFY
 ! bn_all_ef.jnl
@@ -75808,34 +77948,34 @@ exit
  
 exit/command
 *** Running test: bn_startupfile.jnl
- Current size of FERRET memory cache: 31 MegaWords  (1 word = 4 bytes)
-PPL$XPIXEL = "1008"
-PPL$YPIXEL = "816"
+ Current size of FERRET memory cache: 31 MegaWords  (1 word = 8 bytes)
+PPL$XPIXEL = "979"
+PPL$YPIXEL = "844"
 BYTEORDER = "LITTLE"
-FERRET_VERSION = "6.9"
-FERRET_PLATFORM = "Linux 2.6.18-371.4.1.el5"
+FERRET_VERSION = "6.93"
+FERRET_PLATFORM = "Linux 2.6.18-398.el5"
 FERRET_PRECISION = "double"
 NETCDF_VERSION = "4.3.1.1 of Feb 25 2014 11:38:15 $"
 FERRET_MEMORY = "31"
-SESSION_DATE = "31-Mar-14"
-SESSION_TIME = "17:30"
-SESSION_PID = "25931"
-DELTA_CPU = "0.540917"
-CLOCK_SECS = "0.32"
-CURRENT_DATE = "31-Mar-14"
-CURRENT_TIME = "17:30:10"
+SESSION_DATE = " 5-Nov-14"
+SESSION_TIME = "16:42"
+SESSION_PID = "14705"
+DELTA_CPU = "0.537918"
+CLOCK_SECS = "0.335"
+CURRENT_DATE = " 5-Nov-14"
+CURRENT_TIME = "16:42:11"
 N_OPEN_DSETS = "0"
 PROGRAM_NAME = "PyFerret"
 LAST_GO_FILE = "./bn_startupfile.jnl"
 PPL$FORMAT = "(3F10.2)"
 PPL$PLTNME = "ferret.png"
 PPL$TEKNME = "/dev/tty"
-PPL$XLEN = "7.750"
-PPL$YLEN = "5.750"
-PPL$XORG = "1.375"
-PPL$YORG = "1.375"
-PPL$WIDTH = "10.50"
-PPL$HEIGHT = "8.500"
+PPL$XLEN = "8.000"
+PPL$YLEN = "6.000"
+PPL$XORG = "1.200"
+PPL$YORG = "1.400"
+PPL$WIDTH = "10.20"
+PPL$HEIGHT = "8.800"
 PPL$LINE_COUNT = "0"
 PPL$XFACT1 = "1.000"
 PPL$XOFF1 = "0.000"
@@ -75845,13 +77985,13 @@ PPL$VIEW_X = "0.000"
 PPL$VIEW_Y = "0.000"
 PPL$VIEW_Z = "0.000"
 PPL$COMMAND_FILE = "$$MEMBUF$$"
-VP_WIDTH = "10.5"
-VP_HEIGHT = "8.5"
+VP_WIDTH = "10.2"
+VP_HEIGHT = "8.8"
 PPL$SCALE = "1.0000"
-WIN_TITLE = "31-Mar-14_17:30"
+WIN_TITLE = "5-Nov-14_16:42"
 VP_SCALE = "1"
-VP_RT_MARGIN = "1.375"
-VP_TOP_MARGIN = "1.375"
+VP_RT_MARGIN = "1"
+VP_TOP_MARGIN = "1.4"
 VP_XLO = "0"
 VP_XHI = "1"
 VP_YLO = "0"
@@ -75899,4 +78039,4 @@ VP_YHI = "1"
  TAUY     MERIDIONAL WIND STRESS          69:71      1:100     ...       1:3       ...       ...
  PSI      STREAM FUNCTION                 69:73      1:100     ...       1:3       ...       ...
  
-Ended at Mon Mar 31 17:30:10 PDT 2014
+Ended at Wed Nov  5 16:42:11 PST 2014
diff --git a/bench/test_results/pyferret_run_tests_ncdump b/bench/test_results/pyferret_run_tests_ncdump
index 92f2bbe..6407e3a 100644
--- a/bench/test_results/pyferret_run_tests_ncdump
+++ b/bench/test_results/pyferret_run_tests_ncdump
@@ -50,8 +50,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969 ;
@@ -75,8 +75,8 @@ variables:
 		MY_VAR:long_name = "T[GT=T5]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  T5 = 50757969, 50757974 ;
@@ -112,8 +112,8 @@ variables:
 		B:long_name = "\"one line of text\"" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -151,8 +151,8 @@ variables:
 		D:history = "From test_string" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  GFP3 = "" ;
@@ -186,8 +186,8 @@ variables:
 		B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_4 = 1, 2, 3, 4 ;
@@ -256,8 +256,8 @@ variables:
 		V:long_name = "T[GT=MONTH_IRREG]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 
@@ -313,8 +313,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -370,8 +370,8 @@ variables:
 		V:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_90 = 199 ;
@@ -425,8 +425,8 @@ variables:
 		T2:long_name = "Z[GZ=ZIRR]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  ZIRR = 0, 10, 40, 70 ;
@@ -473,8 +473,8 @@ variables:
 		V:history = "From coads_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_83 = 181, 183, 185 ;
@@ -567,8 +567,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -637,8 +637,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -688,8 +688,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -779,8 +779,8 @@ variables:
 		A:long_name = "T[GT=TIME]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  TIME = 0.5, 2 ;
@@ -806,8 +806,8 @@ variables:
 		X_:long_name_mod = "axis ABSTRACT" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ;
 data:
 
@@ -830,8 +830,8 @@ variables:
 		A:history = "From x" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 		:title = "a long title, longer than the previous limit of 80 characters.  Previously various buffers were set to 80, and storage in ds_title was also too short." ;
 data:
 
@@ -857,14 +857,14 @@ variables:
 		A:history = "From t0_cdc" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_tab_comma_multivar.jnl
 *** Running test: bn_element_functions.jnl
 *** Running test: bn_long_revision_num.jnl
 bn_long_revision_num.jnl --- history attribute
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
 *** Running test: bn_window_title.jnl
 *** Running test: bn_last_error.jnl
 *** Running test: bn_deg_min.jnl
@@ -900,8 +900,8 @@ variables:
 		V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1, 2, 5, 6, 7, 8 ;
@@ -973,8 +973,8 @@ variables:
 		VAR_B:long_name = "my strings" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -1017,8 +1017,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX105_105 = 229 ;
@@ -1059,8 +1059,8 @@ variables:
 		SST:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX81_81 = 181 ;
@@ -1167,8 +1167,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 6 after CANCEL MODE upcase_output
 netcdf a {
@@ -1208,8 +1208,8 @@ variables:
 		Elev:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 7 outtput flags to control attribute output
 netcdf a {
@@ -1231,8 +1231,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1257,8 +1257,8 @@ variables:
 		BB:another_attr = 6.f ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1277,8 +1277,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1298,8 +1298,8 @@ variables:
 		BB:long_name = "{3,4.5,6,7,4}" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_5 = 1, 2, 3, 4, 5 ;
@@ -1341,8 +1341,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 12 Check that settings hold for child axis.
 netcdf a {
@@ -1381,8 +1381,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 13 cancel output of attributes of the variable.
 netcdf a {
@@ -1419,40 +1419,40 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 14 attributes of data from ez data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX011 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float A1(XAX1_5) ;
+	double AX011(AX011) ;
+		AX011:point_spacing = "even" ;
+		AX011:axis = "X" ;
+	float A1(AX011) ;
 		A1:missing_value = -1.e+34f ;
 		A1:_FillValue = -1.e+34f ;
 		A1:long_name = "A1" ;
 		A1:three = 1.f, 2.f, 3.f ;
 		A1:history = "From EZ.DAT" ;
-	float A2(XAX1_5) ;
+	float A2(AX011) ;
 		A2:missing_value = -1.e+34f ;
 		A2:_FillValue = -1.e+34f ;
 		A2:long_name = "A2" ;
 		A2:history = "From EZ.DAT" ;
-	float A3(XAX1_5) ;
+	float A3(AX011) ;
 		A3:missing_value = -1.e+34f ;
 		A3:_FillValue = -1.e+34f ;
 		A3:long_name = "A3" ;
 		A3:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX011 = 1, 2, 3, 4, 5 ;
 
  A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -1463,29 +1463,29 @@ data:
 bn_attributes.jnl --- 15 attributes of data from delimited data.
 netcdf a {
 dimensions:
-	XAX1_5 = 5 ;
+	AX008 = 5 ;
 variables:
-	double XAX1_5(XAX1_5) ;
-		XAX1_5:point_spacing = "even" ;
-		XAX1_5:axis = "X" ;
-	float V1(XAX1_5) ;
+	double AX008(AX008) ;
+		AX008:point_spacing = "even" ;
+		AX008:axis = "X" ;
+	float V1(AX008) ;
 		V1:missing_value = -1.e+34f ;
 		V1:_FillValue = -1.e+34f ;
 		V1:long_name = "V1" ;
 		V1:strval = "2" ;
 		V1:history = "From EZ.DAT" ;
-	float V4(XAX1_5) ;
+	float V4(AX008) ;
 		V4:missing_value = -1.e+34f ;
 		V4:_FillValue = -1.e+34f ;
 		V4:long_name = "V4" ;
 		V4:history = "From EZ.DAT" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
- XAX1_5 = 1, 2, 3, 4, 5 ;
+ AX008 = 1, 2, 3, 4, 5 ;
 
  V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ;
 
@@ -1507,8 +1507,8 @@ variables:
 		A:four = "theory" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -1553,8 +1553,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 		:simulation = "K-Bay OAR3d model (200m)" ;
 		:start_date = "980105000000" ;
 		:option = 0 ;
@@ -1660,8 +1660,8 @@ variables:
 		TEMP:units = "deg. C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 		:dt_internal = 15. ;
 }
 bn_attributes.jnl --- 19 scale and offset attr.
@@ -1702,8 +1702,8 @@ variables:
 		ELEV:history = "From err491_attval" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XC = -135.50957036625, -135.496120344706, -135.482670323162, 
@@ -1785,8 +1785,8 @@ variables:
 		RIGUE:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  J = 2, 4, 6 ;
@@ -1822,8 +1822,8 @@ variables:
 		B:long_name = "hello" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  B = 1 ;
@@ -1862,8 +1862,8 @@ variables:
 		VWND:units = "M/S" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -1913,8 +1913,8 @@ variables:
 		T2:history = "From coads_vwnd" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  COADSX90_91 = 199, 201 ;
@@ -1972,8 +1972,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2017,8 +2017,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2060,8 +2060,8 @@ variables:
 		T2:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2095,8 +2095,8 @@ variables:
 		TEMP:units = "DEG C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2129,8 +2129,8 @@ variables:
 		TWO:history = "From levitus_climatology" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 27 attributes of  user-defined axes
 netcdf string4d {
@@ -2159,8 +2159,8 @@ variables:
 		AXY:long_name = "RESHAPE (A,RVAR)" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- 28 Define a new global attribute
 bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var
@@ -2188,8 +2188,8 @@ variables:
 		BROILED:history = "From test0" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 		:glob = "Global attribute" ;
 		:FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ;
 data:
@@ -2249,8 +2249,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2294,8 +2294,8 @@ variables:
 		FAREN:history = "From gt4d011" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_transforms.jnl
 *** Running test: bn_variance.jnl
@@ -2335,8 +2335,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2365,8 +2365,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2395,8 +2395,8 @@ variables:
 		A:long_name = "X[GX=XAX]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX = 1.5, 3, 6, 8.5 ;
@@ -2448,8 +2448,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2490,8 +2490,8 @@ variables:
 		TEMP:units = "Deg C" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
@@ -2508,8 +2508,8 @@ variables:
 		V:long_name = "Y[GY=YAXIS]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_no_valid_on_plot.jnl
 *** Running test: bn_median.jnl
@@ -2517,12 +2517,12 @@ variables:
 err611_set_var_ez.jnl --- 
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX002 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_ASC(XAX1_3) ;
+	double AX002(AX002) ;
+		AX002:point_spacing = "even" ;
+		AX002:axis = "X" ;
+	float MY_ASC(AX002) ;
 		MY_ASC:missing_value = 3.f ;
 		MY_ASC:_FillValue = 3.f ;
 		MY_ASC:long_name = "chlorophyll" ;
@@ -2530,17 +2530,17 @@ variables:
 		MY_ASC:history = "From dat.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 netcdf a {
 dimensions:
-	XAX1_3 = 3 ;
+	AX002 = 3 ;
 variables:
-	double XAX1_3(XAX1_3) ;
-		XAX1_3:point_spacing = "even" ;
-		XAX1_3:axis = "X" ;
-	float MY_UNF(XAX1_3) ;
+	double AX002(AX002) ;
+		AX002:point_spacing = "even" ;
+		AX002:axis = "X" ;
+	float MY_UNF(AX002) ;
 		MY_UNF:missing_value = 5.f ;
 		MY_UNF:_FillValue = 5.f ;
 		MY_UNF:long_name = "Some Unformatted input" ;
@@ -2548,8 +2548,8 @@ variables:
 		MY_UNF:history = "From unf.dat" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_attributes.jnl --- SET VAR/OUTTYPE for user variable
 netcdf a {
@@ -2565,8 +2565,8 @@ variables:
 		A:long_name = "{1.1,2.2,3.3}" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_3 = 1, 2, 3 ;
@@ -2586,8 +2586,8 @@ variables:
 		A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 data:
 
  XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ;
@@ -2605,50 +2605,51 @@ data:
 netcdf a {
 dimensions:
 	XAX1_10 = 10 ;
-	TDAY = UNLIMITED ; // (31 currently)
-	LON1_5 = 5 ;
-	LAT1_5 = 5 ;
+	tday = UNLIMITED ; // (31 currently)
+	lon1_5 = 5 ;
+	lat1_5 = 5 ;
 	bnds = 2 ;
-	ZT = 10 ;
-	TIME1478 = 3 ;
+	zt = 10 ;
+	time1478 = 3 ;
 variables:
 	double XAX1_10(XAX1_10) ;
 		XAX1_10:point_spacing = "even" ;
 		XAX1_10:axis = "X" ;
-	double TDAY(TDAY) ;
-		TDAY:units = "days since 1998-12-31 00:00:00" ;
-		TDAY:axis = "T" ;
-		TDAY:calendar = "GREGORIAN" ;
-		TDAY:time_origin = "31-DEC-1998" ;
-		TDAY:standard_name = "time" ;
-	double MyUpperLowerCaseVar(TDAY, XAX1_10) ;
+	double tday(tday) ;
+		tday:units = "days since 1998-12-31 00:00:00" ;
+		tday:axis = "T" ;
+		tday:calendar = "GREGORIAN" ;
+		tday:time_origin = "31-DEC-1998" ;
+		tday:standard_name = "time" ;
+	double MyUpperLowerCaseVar(tday, XAX1_10) ;
 		MyUpperLowerCaseVar:missing_value = -1.e+34 ;
 		MyUpperLowerCaseVar:_FillValue = -1.e+34 ;
 		MyUpperLowerCaseVar:long_name = "X[X=1:10] + T[GT=TDAY]" ;
-	double LON1_5(LON1_5) ;
-		LON1_5:point_spacing = "even" ;
-		LON1_5:axis = "X" ;
-		LON1_5:standard_name = "longitude" ;
-	double LAT1_5(LAT1_5) ;
-		LAT1_5:point_spacing = "uneven" ;
-		LAT1_5:axis = "Y" ;
-		LAT1_5:standard_name = "latitude" ;
-		LAT1_5:bounds = "LAT1_5_bnds" ;
-	double LAT1_5_bnds(LAT1_5, bnds) ;
-	float ZT(ZT) ;
-		ZT:units = "meters" ;
-		ZT:positive = "down" ;
-		ZT:point_spacing = "uneven" ;
-		ZT:axis = "Z" ;
-		ZT:standard_name = "depth" ;
-		ZT:bounds = "ZT_bnds" ;
-	float ZT_bnds(ZT, bnds) ;
-	double TIME1478(TIME1478) ;
-		TIME1478:calendar = "NOLEAP" ;
-		TIME1478:point_spacing = "even" ;
-		TIME1478:axis = "T" ;
-		TIME1478:standard_name = "time" ;
-	double newvar(TIME1478, ZT, LAT1_5, LON1_5) ;
+	double lon1_5(lon1_5) ;
+		lon1_5:point_spacing = "even" ;
+		lon1_5:axis = "X" ;
+		lon1_5:standard_name = "longitude" ;
+	double lat1_5(lat1_5) ;
+		lat1_5:point_spacing = "uneven" ;
+		lat1_5:axis = "Y" ;
+		lat1_5:standard_name = "latitude" ;
+		lat1_5:bounds = "lat1_5_bnds" ;
+	double lat1_5_bnds(lat1_5, bnds) ;
+	float zt(zt) ;
+		zt:long_name = "zt" ;
+		zt:units = "meters" ;
+		zt:positive = "down" ;
+		zt:point_spacing = "uneven" ;
+		zt:axis = "Z" ;
+		zt:standard_name = "depth" ;
+		zt:bounds = "zt_bnds" ;
+	float zt_bnds(zt, bnds) ;
+	double time1478(time1478) ;
+		time1478:calendar = "NOLEAP" ;
+		time1478:axis = "T" ;
+		time1478:point_spacing = "even" ;
+		time1478:standard_name = "time" ;
+	double newvar(time1478, zt, lat1_5, lon1_5) ;
 		newvar:missing_value = -999. ;
 		newvar:_FillValue = -999. ;
 		newvar:long_name = "outgoing longwave radiation" ;
@@ -2656,8 +2657,8 @@ variables:
 		newvar:history = "From a" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_cdf_keepax.jnl
 *** Running test: bn_keep_axisnames.jnl
@@ -2685,8 +2686,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES
 netcdf a {
@@ -2712,8 +2713,8 @@ variables:
 		A:long_name = "X[GX=X100] + T[GT=T31]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_key_label_minmax.jnl
 *** Running test: bn62_bug_fixes.jnl
@@ -2817,8 +2818,8 @@ variables:
 		ZUP:long_name = "Z[GZ=ZAXUP]" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:
 netcdf a {
@@ -2849,8 +2850,8 @@ variables:
 		Y_:long_name_mod = "axis YFIFTEEN" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since
 netcdf a {
@@ -2882,8 +2883,8 @@ variables:
 		XYTVAR:history = "From bn_strides" ;
 
 // global attributes:
-		:history = "FERRET V6.9 (PyFerret 1.0.2) 31-Mar-14" ;
-		:Conventions = "CF-1.0" ;
+		:history = "FERRET V6.93 (PyFerret 1.1.0)  5-Nov-14" ;
+		:Conventions = "CF-1.6" ;
 }
 *** Running test: bn_repeated_coords.jnl
 *** Running test: bn_xml_header.jnl
@@ -2922,5 +2923,15 @@ variables:
 *** Running test: bn_enter_exit_GO.jnl
 *** Running test: bn_stddev.jnl
 *** Running test: bn_set_axis_name.jnl
+*** Running test: bn691_bug_fixes.jnl
+*** Running test: bn_append_dsg.jnl
+*** Running test: bn_global_atts.jnl
+*** Running test: bn_conventions_history.jnl
+*** Running test: bn_center_key_labels.jnl
+*** Running test: bn_wgt_transform.jnl
+*** Running test: bn_show_outfile.jnl
+*** Running test: bn_date1900_array.jnl
+*** Running test: bn_spawn_size.jnl
+*** Running test: bn_polygon_log.jnl
 *** Running test: bn_all_ef.jnl
 *** Running test: bn_startupfile.jnl
diff --git a/bench/test_results/startup_tests2.pdf b/bench/test_results/startup_tests2.pdf
index 48b5c14..365c8a5 100644
Binary files a/bench/test_results/startup_tests2.pdf and b/bench/test_results/startup_tests2.pdf differ
diff --git a/bench/test_results/timetics.pdf b/bench/test_results/timetics.pdf
index 1461827..0f6cd34 100644
Binary files a/bench/test_results/timetics.pdf and b/bench/test_results/timetics.pdf differ
diff --git a/bench/test_results/timetics2.pdf b/bench/test_results/timetics2.pdf
index d02be64..1824830 100644
Binary files a/bench/test_results/timetics2.pdf and b/bench/test_results/timetics2.pdf differ
diff --git a/bench/test_results/vec_curv.pdf b/bench/test_results/vec_curv.pdf
index d6756a0..d6ccf4b 100644
Binary files a/bench/test_results/vec_curv.pdf and b/bench/test_results/vec_curv.pdf differ
diff --git a/bench/test_results/vec_curv2.pdf b/bench/test_results/vec_curv2.pdf
index be1b9c6..1e5a8e8 100644
Binary files a/bench/test_results/vec_curv2.pdf and b/bench/test_results/vec_curv2.pdf differ
diff --git a/bench/test_results/viewaxes.pdf b/bench/test_results/viewaxes.pdf
index 459e835..b37aa16 100644
Binary files a/bench/test_results/viewaxes.pdf and b/bench/test_results/viewaxes.pdf differ
diff --git a/bench/test_save_dsg_in.nc b/bench/test_save_dsg_in.nc
new file mode 100644
index 0000000..948e1d1
Binary files /dev/null and b/bench/test_save_dsg_in.nc differ
diff --git a/bin/Finstall b/bin/Finstall
index 23f7b47..5b16ec4 100755
--- a/bin/Finstall
+++ b/bin/Finstall
@@ -210,6 +210,7 @@ get_python_vars() {
 write_log_message() {
 #   Sanity check
     if [ -z "${fer_dir}" ]; then
+        echo " "
         echo " Unexpected script error: fer_dir not defined in write_log_message "
         exit 1
     fi
@@ -217,11 +218,12 @@ write_log_message() {
 #   Create Finstall.log file if it does not exist
     logfile="${fer_dir}/bin/Finstall.log"
     if [ ! -f "${logfile}" ]; then
-        echo " Creating Finstall.log in ${fer_dir}/bin "
         timestamp=`/bin/date +' %D %T'`
         if ! echo "${timestamp} Created Finstall.log " > "${logfile}" ; then
             return 1
         fi
+        echo " "
+        echo " Created Finstall.log in ${fer_dir}/bin "
     fi
 
     timestamp=`/bin/date +' %D %T'`
@@ -232,16 +234,16 @@ write_log_message() {
 
 
 ### Edit the ferret_paths_template.{csh,sh} files to create the ferret_paths.{csh,sh} files 
-### and edit the pyferret_template.{csh,sh} files to create the pyferret.{csh.sh} files.
+### and edit the pyferret_template file to create the pyferret file.
 create_ferret_paths_and_pyferret() {
 #   Check for existing ferret_paths.csh
     if [ -f "${ferpaths_dir}/ferret_paths.csh" ]; then
         if mv -f "${ferpaths_dir}/ferret_paths.csh" "${ferpaths_dir}/ferret_paths.csh.old"; then
+            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths.csh"
+            write_log_message "              to ${ferpaths_dir}/ferret_paths.csh.old"
             echo " "
             echo " Renamed existing ${ferpaths_dir}/ferret_paths.csh "
             echo "               to ${ferpaths_dir}/ferret_paths.csh.old "
-            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths.csh"
-            write_log_message "              to ${ferpaths_dir}/ferret_paths.csh.old"
         fi
     fi
 #   Create new ferret_paths.csh
@@ -249,24 +251,28 @@ create_ferret_paths_and_pyferret() {
 setenv FER_DIR \"${fer_dir}\"" \
            -e "/setenv FER_DSETS/c\\
 setenv FER_DSETS \"${fer_dsets}\"" \
+           -e "/set python_exe = /c\\
+set python_exe = \"${python_executable}\"" \
+           -e "/set python_subdir = /c\\
+set python_subdir = \"${python_subdirectory}\"" \
            "${fer_dir}/bin/ferret_paths_template.csh" \
            > "${ferpaths_dir}/ferret_paths.csh" ; then
+        write_log_message "Created ${ferpaths_dir}/ferret_paths.csh"
         echo " "
         echo " Created ${ferpaths_dir}/ferret_paths.csh "
-        write_log_message "Created ${ferpaths_dir}/ferret_paths.csh"
     else
+        write_log_message "Unable to create ${ferpaths_dir}/ferret_paths.csh"
         echo " "
         echo " Unable to create ${ferpaths_dir}/ferret_paths.csh "
-        write_log_message "Unable to create ${ferpaths_dir}/ferret_paths.csh"
     fi
 #   Check for existing ferret_paths.sh
     if [ -f "${ferpaths_dir}/ferret_paths.sh" ]; then
         if mv -f "${ferpaths_dir}/ferret_paths.sh" "${ferpaths_dir}/ferret_paths.sh.old"; then
+            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths.sh"
+            write_log_message "              to ${ferpaths_dir}/ferret_paths.sh.old"
             echo " "
             echo " Renamed existing ${ferpaths_dir}/ferret_paths.sh "
             echo "               to ${ferpaths_dir}/ferret_paths.sh.old "
-            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths.sh"
-            write_log_message "              to ${ferpaths_dir}/ferret_paths.sh.old"
         fi
     fi
 #   Create new ferret_paths.sh
@@ -274,112 +280,89 @@ setenv FER_DSETS \"${fer_dsets}\"" \
 export FER_DIR=\"${fer_dir}\"" \
            -e "/export FER_DSETS=/c\\
 export FER_DSETS=\"${fer_dsets}\"" \
+           -e "/python_exe=/c\\
+python_exe=\"${python_executable}\"" \
+           -e "/python_subdir=/c\\
+python_subdir=\"${python_subdirectory}\"" \
            "${fer_dir}/bin/ferret_paths_template.sh" \
            > "${ferpaths_dir}/ferret_paths.sh" ; then
+        write_log_message "Created ${ferpaths_dir}/ferret_paths.sh"
         echo " "
         echo " Created ${ferpaths_dir}/ferret_paths.sh "
-        write_log_message "Created ${ferpaths_dir}/ferret_paths.sh"
     else
+        write_log_message "Unable to create ${ferpaths_dir}/ferret_paths.sh"
         echo " "
         echo " Unable to create ${ferpaths_dir}/ferret_paths.sh"
-        write_log_message "Unable to create ${ferpaths_dir}/ferret_paths.sh"
     fi
 #   Check for existing ferret_paths
     if [ -f "${ferpaths_dir}/ferret_paths" ]; then
         if mv -f "${ferpaths_dir}/ferret_paths" "${ferpaths_dir}/ferret_paths.old"; then
+            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths"
+            write_log_message "              to ${ferpaths_dir}/ferret_paths.old"
             echo " "
             echo " Renamed existing ${ferpaths_dir}/ferret_paths "
             echo "               to ${ferpaths_dir}/ferret_paths.old "
-            write_log_message "Renamed existing ${ferpaths_dir}/ferret_paths"
-            write_log_message "              to ${ferpaths_dir}/ferret_paths.old"
         fi
     fi
 #   Link ferret_paths to the appropriate file
     if [ -n "${ferpaths_link}" ]; then
         if ( cd "${ferpaths_dir}" ; ln -s "${ferpaths_link}" "ferret_paths" ) ; then
+            write_log_message "Created ${ferpaths_dir}/ferret_paths"
+            write_log_message "    as a link to ${ferpaths_link}"
             echo " "
             echo " Created ${ferpaths_dir}/ferret_paths "
             echo "     as a link to ${ferpaths_link} "
-            write_log_message "Created ${ferpaths_dir}/ferret_paths"
-            write_log_message "    as a link to ${ferpaths_link}"
         else
+            write_log_message "Unable to create ${ferpaths_dir}/ferret_paths"
             echo " "
             echo " Unable to create ${ferpaths_dir}/ferret_paths "
-            write_log_message "Unable to create ${ferpaths_dir}/ferret_paths"
         fi
     fi
-#   Check for existing pyferret.csh
+#   Check for existing pyferret.csh and move it out of the way
     if [ -f "${fer_dir}/bin/pyferret.csh" ]; then
         if mv -f "${fer_dir}/bin/pyferret.csh" "${fer_dir}/bin/pyferret.csh.old"; then
+            write_log_message "Renamed existing ${fer_dir}/bin/pyferret.csh"
+            write_log_message "              to ${fer_dir}/bin/pyferret.csh.old"
             echo " "
             echo " Renamed existing ${fer_dir}/bin/pyferret.csh "
             echo "               to ${fer_dir}/bin/pyferret.csh.old "
-            write_log_message "Renamed existing ${fer_dir}/bin/pyferret.csh"
-            write_log_message "              to ${fer_dir}/bin/pyferret.csh.old"
         fi
     fi
-#   Create new pyferret.csh
-    if sed -e "/set python_exe = /c\\
-set python_exe = \"${python_executable}\"" \
-           -e "/set python_subdir = /c\\
-set python_subdir = \"${python_subdirectory}\"" \
-           "${fer_dir}/bin/pyferret_template.csh" \
-           > "${fer_dir}/bin/pyferret.csh" ; then
-        chmod +x "${fer_dir}/bin/pyferret.csh"
-        echo " "
-        echo " Created executable script ${fer_dir}/bin/pyferret.csh "
-        write_log_message "Created executable script ${fer_dir}/bin/pyferret.csh"
-    else
-        echo " "
-        echo " Unable to create ${fer_dir}/bin/pyferret.csh "
-        write_log_message "Unable to create ${fer_dir}/bin/pyferret.csh"
-    fi
-#   Check for existing pyferret.sh
+#   Check for existing pyferret.sh and move it out of the way
     if [ -f "${fer_dir}/bin/pyferret.sh" ]; then
         if mv -f "${fer_dir}/bin/pyferret.sh" "${fer_dir}/bin/pyferret.sh.old"; then
+            write_log_message "Renamed existing ${fer_dir}/bin/pyferret.sh"
+            write_log_message "              to ${fer_dir}/bin/pyferret.sh.old"
             echo " "
             echo " Renamed existing ${fer_dir}/bin/pyferret.sh "
             echo "               to ${fer_dir}/bin/pyferret.sh.old "
-            write_log_message "Renamed existing ${fer_dir}/bin/pyferret.sh"
-            write_log_message "              to ${fer_dir}/bin/pyferret.sh.old"
         fi
     fi
-#   Create new pyferret.sh
-    if sed -e "/python_exe=/c\\
-python_exe=\"${python_executable}\"" \
-           -e "/python_subdir=/c\\
-python_subdir=\"${python_subdirectory}\"" \
-           "${fer_dir}/bin/pyferret_template.sh" \
-           > "${fer_dir}/bin/pyferret.sh" ; then
-        chmod +x "${fer_dir}/bin/pyferret.sh"
-        echo " "
-        echo " Created executable script ${fer_dir}/bin/pyferret.sh "
-        write_log_message "Created executable script ${fer_dir}/bin/pyferret.sh"
-    else
-        echo " "
-        echo " Unable to create ${fer_dir}/bin/pyferret.sh"
-        write_log_message "Unable to create ${fer_dir}/bin/pyferret.sh"
-    fi
 #   Check for existing pyferret
     if [ -f "${fer_dir}/bin/pyferret" ]; then
         if mv -f "${fer_dir}/bin/pyferret" "${fer_dir}/bin/pyferret.old"; then
+            write_log_message "Renamed existing ${fer_dir}/bin/pyferret"
+            write_log_message "              to ${fer_dir}/bin/pyferret.old"
             echo " "
             echo " Renamed existing ${fer_dir}/bin/pyferret "
             echo "               to ${fer_dir}/bin/pyferret.old "
-            write_log_message "Renamed existing ${fer_dir}/bin/pyferret"
-            write_log_message "              to ${fer_dir}/bin/pyferret.old"
         fi
     fi
-#   Link pyferret to pyferret.sh, regardless of user's shell, 
-#   since it is run as an executable script
-    if ( cd "${fer_dir}/bin" ; ln -s "pyferret.sh" "pyferret" ) ; then
+#   Create new pyferret
+    if sed -e "/python_exe=/c\\
+python_exe=\"${python_executable}\"" \
+           -e "/python_subdir=/c\\
+python_subdir=\"${python_subdirectory}\"" \
+           "${fer_dir}/bin/pyferret_template" \
+           > "${fer_dir}/bin/pyferret" ; then
+        chmod +x "${fer_dir}/bin/pyferret"
+        write_log_message "Created executable script ${fer_dir}/bin/pyferret"
         echo " "
-        echo " Created executable script ${fer_dir}/bin/pyferret "
-        write_log_message "Created executable script ${fer_dir}/bin/pyferret "
+        echo " Created executable script ${fer_dir}/bin/pyferret"
     else
+        write_log_message "Unable to create ${fer_dir}/bin/pyferret"
         echo " "
-        echo " Unable to create executable script ${fer_dir}/bin/pyferret "
-        write_log_message "Unable to create executable script ${fer_dir}/bin/pyferret "
+        echo " Unable to create ${fer_dir}/bin/pyferret"
     fi
 }
 
@@ -416,16 +399,18 @@ install_execs() {
     exetar_files=`tar tzf ${ferexec_dir}/fer_executables.tar.gz`
     if [ -z "${exetar_files}" ]; then
 #        tar should have already printed a more appropriate error message
-         echo " No files found in ${ferexec_dir}/fer_executables.tar.gz "
          write_log_message "No files found in ${ferexec_dir}/fer_executables.tar.gz"
+         echo " "
+         echo " No files found in ${ferexec_dir}/fer_executables.tar.gz "
          return 1
     fi
 
 #   Make sure the tar file is the right format
     lib_files=`tar tzf ${ferexec_dir}/fer_executables.tar.gz lib`
     if [ -z "${lib_files}" ]; then
-         echo " Aborting - old style fer_executables.tar.gz "
          write_log_message "Aborting - old style fer_executables.tar.gz"
+         echo " "
+         echo " Aborting - old style fer_executables.tar.gz "
          return 1
     fi
 
@@ -437,8 +422,9 @@ install_execs() {
             if mv -f "${fer_dir}/${exefile}" "${fer_dir}/${exefile}.old" ; then
                 write_log_message "Renamed existing ${exefile} to ${exefile}.old"
             else
-                echo " Aborting - unable to rename ${fer_dir}/${exefile} "
                 write_log_message "Aborting - unable to rename ${exefile}"
+                echo " "
+                echo " Aborting - unable to rename ${fer_dir}/${exefile} "
                 return 1
             fi
         fi
diff --git a/bin/ferret_paths_template.csh b/bin/ferret_paths_template.csh
index 519e754..8e4d14c 100644
--- a/bin/ferret_paths_template.csh
+++ b/bin/ferret_paths_template.csh
@@ -11,26 +11,37 @@ setenv FER_DIR "/usr/local/ferret"
 ## the directory you created for the FERRET demonstration data files (30+ Mbytes).
 setenv FER_DSETS "${FER_DIR}/fer_dsets"
 
+## set python_exe to the (optionally full-path) python executable to use
+set python_exe = PYTHON_EXECUTABLE
+
+## set python_subdir to 'python2.6' or 'python2.7' 
+## whichever is appropriate for the above python executable
+set python_subdir = PYTHON_SUBDIRECTORY
+
 ## Web browser for your system used in some "go" scripts
 setenv FER_WEB_BROWSER "firefox"
 
-## If "java -version" does not run from the command prompt,
-## or does not report a java 1.6.x version, the environment 
-## variable JAVA_HOME needs to be defined in order to run 
-## the ThreddsBrowser GUI.  The directory defined by this 
-## environment variable contains the java executable (version
-## 1.6.x) in the bin subdirectory (ie, bin/java).
+## If "java -version" does not run from the command prompt, or
+## does not report a java 1.6.x or later (e.g., 1.7.x) version, 
+## the environment variable JAVA_HOME needs to be defined in 
+## order to run the ThreddsBrowser GUI.  The directory defined 
+## by this environment variable contains the java executable 
+## in the bin subdirectory (ie, bin/java).
 if ( ! $?JAVA_HOME ) then
-    ## try some common locations; 
+    ## try some common locations
     if ( -x "/usr/java/latest/bin/java" ) then
         setenv JAVA_HOME "/usr/java/latest"
-    else if ( -x "/usr/lib/jvm/java-1.6.0-sun/bin/java" ) then
-        setenv JAVA_HOME "/usr/lib/jvm/java-1.6.0-sun"
-    else if ( -x "/usr/lib/jvm/java-6-sun/bin/java" ) then
-        setenv JAVA_HOME "/usr/lib/jvm/java-6-sun"
+    else if ( -x "/usr/lib/jvm/java-1.7.0/bin/java" ) then
+        setenv JAVA_HOME "/usr/lib/jvm/java-1.7.0"
+    else if ( -x "/usr/lib/jvm/java-7/bin/java" ) then
+        setenv JAVA_HOME "/usr/lib/jvm/java-7"
+    else if ( -x "/usr/lib/jvm/java-1.6.0/bin/java" ) then
+        setenv JAVA_HOME "/usr/lib/jvm/java-1.6.0"
+    else if ( -x "/usr/lib/jvm/java-6/bin/java" ) then
+        setenv JAVA_HOME "/usr/lib/jvm/java-6"
     endif
     ## or comment the above out and just set your own location
-    # setenv JAVA_HOME "/my/java-1.6/home"
+    # setenv JAVA_HOME "/my/java/home"
 endif
 
 ## =========== The remainder of this file should not need modification ===========
@@ -80,6 +91,29 @@ setenv FER_LIBS "${FER_DIR}/lib"
 
 setenv FER_DAT "${FER_DIR}"
 
+## Assign the directory containing the pyferret Python package (directory)
+set pysite = "${FER_LIBS}/${python_subdir}/site-packages"
+
+## Add $pysite to the Python search path given by PYTHONPATH 
+## so the pyferret package will be found.
+if ( ! $?PYTHONPATH ) then
+    setenv PYTHONPATH "${pysite}"
+else
+    if ( "${PYTHONPATH}" !~ "*${pysite}*" ) then
+        setenv PYTHONPATH "${pysite}:${PYTHONPATH}"
+    endif
+endif
+
+## Add $pysite/pyferret to the shared-object library search path given 
+## by LD_LIBRARY_PATH so libpyferret.so will be found.
+if ( ! $?LD_LIBRARY_PATH ) then
+    setenv LD_LIBRARY_PATH "${pysite}/pyferret"
+else
+    if ( "${LD_LIBRARY_PATH}" !~ "*${pysite}/pyferret*" ) then
+        setenv LD_LIBRARY_PATH "${pysite}/pyferret:${LD_LIBRARY_PATH}"
+    endif
+endif
+
 ## Faddpath: a tool to quickly add paths to the search lists
 alias Faddpath 'if ( "\!*" != "" ) then \
                    setenv FER_GO "$FER_GO \!*" \
diff --git a/bin/ferret_paths_template.sh b/bin/ferret_paths_template.sh
index 37bebc4..4d585d8 100644
--- a/bin/ferret_paths_template.sh
+++ b/bin/ferret_paths_template.sh
@@ -11,26 +11,37 @@ export FER_DIR="/usr/local/ferret"
 ## the directory you created for the FERRET demonstration data files (30+ Mbytes).
 export FER_DSETS="${FER_DIR}/fer_dsets"
 
+## set python_exe to the (optionally full-path) python executable to use
+python_exe=PYTHON_EXECUTABLE
+
+## set python_subdir to 'python2.6' or 'python2.7' 
+## whichever is appropriate for the above python executable
+python_subdir=PYTHON_SUBDIRECTORY
+
 ## Web browser for your system used in some "go" scripts
 export FER_WEB_BROWSER="firefox"
 
-## If "java -version" does not run from the command prompt,
-## or does not report a java 1.6.x version, the environment 
-## variable JAVA_HOME needs to be defined in order to run 
-## the ThreddsBrowser GUI.  The directory defined by this 
-## environment variable contains the java executable (version
-## 1.6.x) in the bin subdirectory (ie, bin/java).
+## If "java -version" does not run from the command prompt, or
+## does not report a java 1.6.x or later (e.g., 1.7.x) version, 
+## the environment variable JAVA_HOME needs to be defined in 
+## order to run the ThreddsBrowser GUI.  The directory defined 
+## by this environment variable contains the java executable 
+## in the bin subdirectory (ie, bin/java).
 if [ -z "$JAVA_HOME" ]; then
     ## try some common locations; 
     if [ -x "/usr/java/latest/bin/java" ]; then
         export JAVA_HOME="/usr/java/latest"
-    elif [ -x "/usr/lib/jvm/java-1.6.0-sun/bin/java" ]; then
-        export JAVA_HOME="/usr/lib/jvm/java-1.6.0-sun"
-    elif [ -x "/usr/lib/jvm/java-6-sun/bin/java" ]; then
-        export JAVA_HOME="/usr/lib/jvm/java-6-sun"
+    elif [ -x "/usr/lib/jvm/java-1.7.0/bin/java" ]; then
+        export JAVA_HOME="/usr/lib/jvm/java-1.7.0"
+    elif [ -x "/usr/lib/jvm/java-7/bin/java" ]; then
+        export JAVA_HOME="/usr/lib/jvm/java-7"
+    elif [ -x "/usr/lib/jvm/java-1.6.0/bin/java" ]; then
+        export JAVA_HOME="/usr/lib/jvm/java-1.6.0"
+    elif [ -x "/usr/lib/jvm/java-6/bin/java" ]; then
+        export JAVA_HOME="/usr/lib/jvm/java-6"
     fi
     ## or comment the above out and just set your own location
-    # export JAVA_HOME="/my/java-1.6/home"
+    # export JAVA_HOME="/my/java/home"
 fi
 
 
@@ -76,11 +87,35 @@ export FER_FONTS="${FER_DIR}/ppl/fonts"
 export PLOTFONTS="${FER_DIR}/ppl/fonts"
 
 ## Directory containing threddsBrowser.jar and toolsUI.jar for ThreddsBrowser
+## as well as the python2.x/site-packages directory for PyFerret Python packages
 export FER_LIBS="${FER_DIR}/lib"
 
 ## Ferret directory (old)
 export FER_DAT="${FER_DIR}"
 
+## Assign the directory containing the pyferret Python package (directory)
+pysite="${FER_LIBS}/${python_subdir}/site-packages"
+
+## Add pysite to the Python search path given by PYTHONPATH
+## so the pyferret package will be found.
+if [ -z "${PYTHONPATH}" ]; then
+    export PYTHONPATH="${pysite}"
+else
+    if ! echo "${PYTHONPATH}" | grep -q "${pysite}"; then
+        export PYTHONPATH="${pysite}:${PYTHONPATH}"
+    fi
+fi
+
+## Add $pysite/pyferret to the shared-object library search path given 
+## by LD_LIBRARY_PATH so libpyferret.so will be found.
+if [ -z "${LD_LIBRARY_PATH}" ]; then
+    export LD_LIBRARY_PATH="${pysite}/pyferret"
+else
+    if ! echo "${LD_LIBRARY_PATH}" | grep -q "${pysite}/pyferret"; then
+        export LD_LIBRARY_PATH="${pysite}/pyferret:${LD_LIBRARY_PATH}"
+    fi
+fi
+
 ## Faddpath: a tool to quickly add paths to the search lists
 Faddpath() { if [ -n "$*" ]
              then
diff --git a/bin/make_executable_tar b/bin/make_executable_tar
index 6290664..dec1cde 100755
--- a/bin/make_executable_tar
+++ b/bin/make_executable_tar
@@ -2,7 +2,7 @@
 
 # mycp needs to recursively copy subdirectories for the lib/python* directories
 # verbose flag used to create info messages when running this script
-mycp="/bin/cp -v -r --preserve=timestamp"
+mycp="/bin/cp -v -R -p"
 mylns="/bin/ln -v -s"
 
 echo ""
diff --git a/bin/pyferret_template.sh b/bin/pyferret_template
similarity index 53%
rename from bin/pyferret_template.sh
rename to bin/pyferret_template
index 66a7285..a43806a 100644
--- a/bin/pyferret_template.sh
+++ b/bin/pyferret_template
@@ -6,10 +6,6 @@
 ## set python_exe to the (optionally full-path) python executable to use
 python_exe=PYTHON_EXECUTABLE
 
-## set python_subdir to 'python2.6' or 'python2.7' 
-## whichever is appropriate for the above python executable
-python_subdir=PYTHON_SUBDIRECTORY
-
 ## Make sure the FER_* environment variables are assigned
 if [ -z "${FER_LIBS}" ]; then
 ## Either source the ferret_paths script to assign the environment variables
@@ -25,29 +21,8 @@ fi
 ## ==== The following should not need any modifications ====
 ##
 
-
-## Assign the directory containing the pyferret Python package (directory)
-pysite="${FER_LIBS}/${python_subdir}/site-packages"
-
-## Add pysite to the Python search path given by PYTHONPATH
-## so the pyferret package will be found.
-if [ -z "${PYTHONPATH}" ]; then
-    export PYTHONPATH="${pysite}"
-else
-    if ! echo "${PYTHONPATH}" | grep -q "${pysite}"; then
-        export PYTHONPATH="${pysite}:${PYTHONPATH}"
-    fi
-fi
-
-## Add $pysite/pyferret to the shared-object library search path given 
-## by LD_LIBRARY_PATH so libpyferret.so will be found.
-if [ -z "${LD_LIBRARY_PATH}" ]; then
-    export LD_LIBRARY_PATH="${pysite}/pyferret"
-else
-    if ! echo "${LD_LIBRARY_PATH}" | grep -q "${pysite}/pyferret"; then
-        export LD_LIBRARY_PATH="${pysite}/pyferret:${LD_LIBRARY_PATH}"
-    fi
-fi
+## The pyferret assignment to PYTHONPATH and LD_LIBRARY_PATH 
+## is now done in the ferret_paths script.
 
 ## Finally, execute an in-line Python script to run Ferret using the pyferret 
 ## module.  The init method explicity processes the $PYTHONSTARTUP file, if it
diff --git a/bin/pyferret_template.csh b/bin/pyferret_template.csh
deleted file mode 100644
index c8fa14f..0000000
--- a/bin/pyferret_template.csh
+++ /dev/null
@@ -1,55 +0,0 @@
-#! /bin/csh
-## This C-shell script is used to initialize and run Ferret using the 
-## pyferret Python module.  The intent of this script is to provide a 
-## traditional Ferret interface through the pyferret module.
-
-## set python_exe to the (optionally full-path) python executable to use
-set python_exe = PYTHON_EXECUTABLE
-
-## set python_subdir to 'python2.6' or 'python2.7' 
-## whichever is appropriate for the above python executable
-set python_subdir = PYTHON_SUBDIRECTORY
-
-## Make sure the FER_* environment variables are assigned
-if ( ! $?FER_LIBS ) then
-## Either source the ferret_paths script to assign the environment variables
-#    source "/my/path/to/ferret_paths.csh"
-## or just throw an error if they should have already been defined
-    echo "**ERROR: Ferret environment variables are not defined"
-    exit 1
-##
-endif
-
-##
-## ==== The following should not need any modifications ====
-##
-
-
-## Assign the directory containing the pyferret Python package (directory)
-set pysite = "${FER_LIBS}/${python_subdir}/site-packages"
-
-## Add $pysite to the Python search path given by PYTHONPATH 
-## so the pyferret package will be found.
-if ( ! $?PYTHONPATH ) then
-    setenv PYTHONPATH "${pysite}"
-else
-    if ( "${PYTHONPATH}" !~ "*${pysite}*" ) then
-        setenv PYTHONPATH "${pysite}:${PYTHONPATH}"
-    endif
-endif
-
-## Add $pysite/pyferret to the shared-object library search path given 
-## by LD_LIBRARY_PATH so libpyferret.so will be found.
-if ( ! $?LD_LIBRARY_PATH ) then
-    setenv LD_LIBRARY_PATH "${pysite}/pyferret"
-else
-    if ( "${LD_LIBRARY_PATH}" !~ "*${pysite}/pyferret*" ) then
-        setenv LD_LIBRARY_PATH "${pysite}/pyferret:${LD_LIBRARY_PATH}"
-    endif
-endif
-
-## Finally, execute an in-line Python script to run Ferret using the pyferret 
-## module.  The init method explicity processes the $PYTHONSTARTUP file, if it
-## exists and if '-secure' was not given as a command-line argument.
-${python_exe} -i -c "import sys; import pyferret; (errval, errmsg) = pyferret.init(sys.argv[1:], True)" $*
-
diff --git a/external_functions/Makefile b/external_functions/Makefile
index 136f0a7..3228070 100644
--- a/external_functions/Makefile
+++ b/external_functions/Makefile
@@ -24,8 +24,8 @@ include ../platform_specific.mk.$(BUILDTYPE)
 # Macro Definitions
 #
 
-DIRS = contributed examples fft statistics
-MOREDIRS = contributed cmprsi_by decimate examples extrema featurecollections gridding fft las statistics tax_times
+DIRS = contributed decimate examples fft las statistics stringfcns
+MOREDIRS = contributed cmprsi_by decimate examples extrema featurecollections gridding fft las statistics stringfcns tax_times
 # DIRS = contributed examples fft sort cflib closest_in_list hinterp featurecollections romea odd_formats cat statistics tax_times gridding zaxr 
 
 #
diff --git a/external_functions/cmprsi_by/Makefile b/external_functions/cmprsi_by/Makefile
index 7dcd0eb..74747b4 100644
--- a/external_functions/cmprsi_by/Makefile
+++ b/external_functions/cmprsi_by/Makefile
@@ -6,6 +6,7 @@
 # *sh* 2/02 -- updated to add expndi_by_z
 # *acm*2/02 -- cmprsi_by has been replaced by family of compress_by
 #              functions, which are internally linked.
+# acm* 4/13 -- new expndi_by_m_counts
 #
 
 #
@@ -37,7 +38,7 @@ include ../ef_utility/platform_specific.mk.$(BUILDTYPE)
 #
 
 # all:	expndi_by.so expndi_by_z.so expndi_by_t.so cmprsi_by.so expndi_by_z_counts.so 
-all:	
+all:	expndi_by_m_counts.so 
 
 debug:
 	$(MAKE) "FFLAGS = $(FFLAGS) $(FFLAGS_DEBUG)" "CFLAGS = $(CFLAGS) $(CFLAGS_DEBUG)" all
diff --git a/external_functions/cmprsi_by/expndi_by_m_counts.F b/external_functions/cmprsi_by/expndi_by_m_counts.F
new file mode 100644
index 0000000..4eaf74d
--- /dev/null
+++ b/external_functions/cmprsi_by/expndi_by_m_counts.F
@@ -0,0 +1,292 @@
+* 
+*  expndi_by_m_counts.F
+* 
+*  Ansley Manke (from expndi_by_m_counts)
+*  4/2014
+* 
+* Expand argument 1 by creating a 2D XE structure from it with the 
+* separation between X rows given by the lengths specified in 
+* argument 2. Argument 2 is a list of length N, where N is the number of 
+* X rows to create, and each item in the list is the length of that 
+* column (the length of the cruise or profile). Thus the X rows created 
+* are "ragged" Typical use is that arg 1 is a collection of vertical casts 
+* appended end-to-end and that arg 2 is the number of values in each cast.
+* The sum of the values in arg 2 is the length of argument 1. 
+
+*  Args 3 and 4 are constants -- the size of the X and E axes, respectively
+ 
+*  In this subroutine we provide information about
+*  the function.  The user configurable information 
+*  consists of the following:
+* 
+*  descr              Text description of the function
+* 
+*  num_args           Required number of arguments
+* 
+*  axis_inheritance   Type of axis for the result
+*                        ( CUSTOM, IMPLIED_BY_Z_ARGS, NORMAL, ABSTRACT )
+*                        CUSTOM          - user defined axis
+*                        IMPLIED_BY_Z_ARGS - same axis as the incoming argument
+*                        NORMAL          - the result is normal to this axis
+*                        ABSTRACT        - an axis which only has index values
+* 
+*  piecemeal_ok       For memory optimization:
+*                        axes where calculation may be performed piecemeal
+*                        ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE expndi_by_m_counts_init(id)
+
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id, arg
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      CALL ef_set_desc(id,
+     .  'Expand arg1 into an XE grid. (split I variable into E-Rows)' )
+
+      CALL ef_set_num_args(id, 3)
+      CALL ef_set_has_vari_args(id, NO)
+      CALL ef_set_axis_inheritance_6d(id, CUSTOM, NORMAL, NORMAL, 
+     .                                    NORMAL, CUSTOM, NORMAL)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'dat')
+      CALL ef_set_arg_desc(id, arg, '1-D variable to expand')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'counts')
+      CALL ef_set_arg_desc(id, arg,
+     .          '1-D list: count of values in each profile')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+
+      arg = 3
+      CALL ef_set_arg_name(id, arg, 'max_profile_len')
+      CALL ef_set_arg_desc(id, arg,
+     .          'I size of result (constant)')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+
+
+*
+* In this subroutine we define limits for custom axes.
+*
+* lo_ss               lo subscript for an axis
+*
+* hi_ss               hi subscript for an axis
+*
+
+      SUBROUTINE expndi_by_m_counts_custom_axes(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      REAL size, ene
+      integer arg, idim, ilen, ndim
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+*
+*     Use utility functions to get context information about the arguments.
+*
+* output E axis size
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      ndim = 6
+      arg = 2
+      ene = 1
+      DO idim = 1, ndim
+        ilen = arg_hi_ss(idim,arg) - arg_lo_ss(idim,arg) + 1
+        IF (ene.GT.1 .AND. ilen.GT.1) 
+     .    CALL EF_BAIL_OUT(id, 'Arg 1 must be a 1D list')
+	
+        ene = MAX(ene, FLOAT(ilen))
+      ENDDO
+
+      CALL ef_set_custom_axis(id, E_AXIS, 1.0, ene, 1.0, 'Row', NO)
+
+
+* output X axis size
+      CALL ef_get_one_val(id, ARG3, size)
+      CALL ef_set_custom_axis(id, X_AXIS, 1, size, 1., 'Obs', NO)
+
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+
+* 
+*  In this subroutine we compute the result
+* 
+      SUBROUTINE expndi_by_m_counts_compute(id, arg_1, arg_2, arg_3, 
+     .                               result)
+
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+      INTEGER id
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy,
+     .	   mem1loz:mem1hiz, mem1lot:mem1hit,
+     .	   mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy,
+     .     mem2loz:mem2hiz, mem2lot:mem2hit,
+     .	   mem2loe:mem2hie, mem2lof:mem2hif)
+      REAL arg_3(mem3lox:mem3hix, mem3loy:mem3hiy,
+     .     mem3loz:mem3hiz, mem3lot:mem3hit,
+     .	   mem3loe:mem3hie, mem3lof:mem3hif)
+      REAL result(memreslox:memreshix, memresloy:memreshiy,
+     .     memresloz:memreshiz, memreslot:memreshit,
+     .     memresloe:memreshie, memreslof:memreshif)
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable's axes. 
+
+      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr(6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS), arg_hi_ss(6,EF_MAX_ARGS),
+     .     arg_incr(6,EF_MAX_ARGS)
+
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER i,j,k,l,m,n
+      INTEGER i1, j1, k1, l1, m1, n1
+      INTEGER i2, j2, k2, l2, m2, n2
+      INTEGER imax, mmax, iout, isum, mrow
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+* limits on output arrays
+        imax = res_hi_ss(X_AXIS)
+        mmax = res_hi_ss(E_AXIS)
+
+* sum of counts in arg 2 must be length of x-dimension of arg1
+
+      do 20 i2 = arg_lo_ss(X_AXIS,ARG2), arg_hi_ss(X_AXIS,ARG2)
+      do 20 j2 = arg_lo_ss(Y_AXIS,ARG2), arg_hi_ss(Y_AXIS,ARG2)
+      do 20 k2 = arg_lo_ss(Z_AXIS,ARG2), arg_hi_ss(Z_AXIS,ARG2)
+      do 20 L2 = arg_lo_ss(T_AXIS,ARG2), arg_hi_ss(T_AXIS,ARG2)
+      do 20 n2 = arg_lo_ss(F_AXIS,ARG2), arg_hi_ss(F_AXIS,ARG2)
+         isum = 0
+         DO 10 m2 = arg_lo_ss(E_AXIS,ARG2), arg_hi_ss(E_AXIS,ARG2)
+            IF  (arg_2(i2,j2,k2,l2,m2,n2) .EQ. bad_flag(ARG2) .OR. 
+     .           INT(arg_2(i2,j2,k2,l2,m2,n2)) .LT. 0)
+     .          CALL EF_BAIL_OUT(id, 'arg 2 must be non-missing counts GE zero')
+            isum = isum + INT(arg_2(i2,j2,k2,l2,m2,n2))
+ 10   CONTINUE
+         IF (isum .NE. (arg_hi_ss(X_AXIS,ARG1)-arg_lo_ss(X_AXIS,ARG1)+1) )
+     .       CALL EF_BAIL_OUT(id, 
+     .         'arg 2 values (counts) must sum to x-dimension length of of arg1 ')
+ 20   CONTINUE
+
+* pre-fill the entire output result with missing value flags
+*  (since length of each profile may have different number of pts)
+      DO 100 n=res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+      DO 100 m=res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+      DO 100 l=res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+      DO 100 j=res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+      DO 100 k=res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+      DO 100 i=res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+         result(i,j,k,l,m,n) = bad_flag_result
+ 100  CONTINUE
+
+* fill in the points as specified by the counts
+
+      n1 = arg_lo_ss(F_AXIS,ARG1)
+      n2 = arg_lo_ss(F_AXIS,ARG2)
+      DO 400 n=res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+
+      l1 = arg_lo_ss(T_AXIS,ARG1)
+      l2 = arg_lo_ss(T_AXIS,ARG2)
+      DO 400 l=res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+
+      k1 = arg_lo_ss(Z_AXIS,ARG1)
+      k2 = arg_lo_ss(Z_AXIS,ARG2)
+      DO 400 k=res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+
+      j1 = arg_lo_ss(Y_AXIS,ARG1)
+      j2 = arg_lo_ss(Y_AXIS,ARG2)
+      DO 400 j=res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+
+         i1 = arg_lo_ss(X_AXIS,ARG1)
+         i2 = arg_lo_ss(X_AXIS,ARG2)
+
+         m1 = arg_lo_ss(E_AXIS,ARG1)
+         m2 = arg_lo_ss(E_AXIS,ARG2)
+
+         DO 300 m=res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+
+	    mrow = INT( arg_2(i2,j2,k2,l2,m2,n2) )
+            DO 200 iout = 1, mrow
+               result(iout,j,k,l,m,n) = arg_1(i1,j1,k1,l1,m1,n1)
+               i1 = i1 + 1
+ 200        CONTINUE
+
+            m2 = m2 + 1
+ 300     CONTINUE
+
+         j1 = j1 + arg_incr(Y_AXIS,ARG1)
+         j2 = j2 + arg_incr(Y_AXIS,ARG2)
+         k1 = k1 + arg_incr(Z_AXIS,ARG1)
+         k2 = k2 + arg_incr(Z_AXIS,ARG2)
+         l1 = l1 + arg_incr(T_AXIS,ARG1)
+         l2 = l2 + arg_incr(T_AXIS,ARG2)
+         n1 = n1 + arg_incr(F_AXIS,ARG1)
+         n2 = n2 + arg_incr(F_AXIS,ARG2)
+ 400  CONTINUE
+      
+         
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
diff --git a/external_functions/decimate/Makefile b/external_functions/decimate/Makefile
index d767c4c..62e4cc8 100644
--- a/external_functions/decimate/Makefile
+++ b/external_functions/decimate/Makefile
@@ -12,6 +12,7 @@ include ../ef_utility/platform_specific.mk.$(BUILDTYPE)
 #
 
 .SUFFIXES: .so
+SUB_OBJS = piecewise_subs.o
 
 #
 # Rules
@@ -19,13 +20,14 @@ include ../ef_utility/platform_specific.mk.$(BUILDTYPE)
 
 .F.so:
 	$(F77) $(FFLAGS) -c  $<
-	$(LD) $(LD_DYN_FLAGS) $(SYSLIBS) $*.o -o $*.so
+	$(LD) $(LD_DYN_FLAGS) $(SUB_OBJS) $*.o $(SYSLIBS) -o $*.so
 
 #
 # Targets
 #
 
-all:	piecewise.so piecewise3.so piecewise3_z.so separate.so sample_fast_i.so sample_rows.so apply_qc.so
+#all:	$(SUB_OBJS) piecewise.so piecewise3.so piecewise1.so piecewise2.so separate.so sample_fast_i.so sample_rows.so apply_qc.so sample_fast_i_str.so sample_rows.so
+all:	$(SUB_OBJS) piecewise3.so separate.so separate_str.so sample_fast_i.so
 
 debug:
 	$(MAKE) "FFLAGS = $(FFLAGS) -g -Ddebug" "CFLAGS = $(CFLAGS) -g -Ddebug"  all
diff --git a/external_functions/decimate/separate.F b/external_functions/decimate/piecewise1.F
similarity index 51%
copy from external_functions/decimate/separate.F
copy to external_functions/decimate/piecewise1.F
index 48b3b29..8012ee0 100644
--- a/external_functions/decimate/separate.F
+++ b/external_functions/decimate/piecewise1.F
@@ -1,4 +1,4 @@
-*  separate.F
+*  piecewise1.F
 * 
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
@@ -33,8 +33,10 @@
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 
 * Ansley Manke June 2013
-* Given a data variable and a ROWSIZE indicating trajectory length,
-* Insert a bad-value between trajectories.
+* implements stl2, Piecewise linear approximations of fewest line segments
+* described in http://www.computer.org/csdl/proceedings/afips/1972/5079/00/50790187.pdf
+* and a somewhat later version of the code, found at
+* http://www.netlib.org/toms/510
 *
 *
 *  In this subroutine we provide information about
@@ -72,7 +74,7 @@
 *
 
 
-      SUBROUTINE separate_init(id)
+      SUBROUTINE piecewise1_init(id)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -85,30 +87,31 @@
 *                                                                      V
 
       CALL ef_set_desc(id,
-     . 'Insert a bad-value between features' )
+     . 'Return indices to sample from piecewise linear interpolation of 1 var' )
 
-      CALL ef_set_num_args(id, 3)
+      CALL ef_set_num_args(id, 3) 
       CALL ef_set_has_vari_args(id, NO)
-      CALL ef_set_axis_inheritance_6d(id, ABSTRACT, NORMAL, NORMAL, 
-     .                                             NORMAL, NORMAL, NORMAL)
-      CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_axis_inheritance(id, ABSTRACT, NORMAL, 
+     .                                              NORMAL,   NORMAL)
+      CALL ef_set_piecemeal_ok(id, NO, NO, NO, NO)
+      CALL ef_set_num_work_arrays(id, 4)
 
       arg = 1
-      CALL ef_set_arg_name(id, arg, 'A')
-      CALL ef_set_arg_desc(id, arg, 'variable to sample on I axis')
-      CALL ef_set_axis_influence_6d(id, arg, YES, NO, NO, NO, NO, NO)
+      CALL ef_set_arg_name(id, arg, 'V1')
+      CALL ef_set_arg_desc(id, arg, 'variable to sample')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
 
       arg = 2
-      CALL ef_set_arg_name(id, arg, 'Rowsize')
+      CALL ef_set_arg_name(id, arg, 'Control parameter')
       CALL ef_set_arg_desc(id, arg,
-     .          'array with per-feature row lengths')
-      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+     .          'Control parameter (e.g. 6 for ntol=rest=cont=1)')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
 
       arg = 3
-      CALL ef_set_arg_name(id, arg, 'FixLongitudes')
-      CALL ef_set_arg_desc(id, arg,
-     .          '1 if A is longitudes needing modulo fixes, 0 otherwise')
-      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_arg_name(id, arg, 'Tol1')
+      CALL ef_set_arg_desc(id, arg, 'Tolerance for V1')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
 
 *                                                                      ^
 *                                                                      |
@@ -119,55 +122,118 @@
       END
 
 
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* lo_ss               lo subscript for an axis
+*
+* hi_ss               hi subscript for an axis
+*
 
+      SUBROUTINE piecewise1_result_limits(id)
 
-      SUBROUTINE separate_result_limits(id)
-
+      IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
 
       INTEGER id
 
 * **********************************************************************
-*                                            USER CONFIGURABLE PORTION |
-*                                                                      |
-*                                                                      V
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
 
-*     Use utility functions  to get context information about the arguments.
-*     indices.
+      INTEGER my_hi_i
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
 
+*
+*     Use utility functions to get context information about the arguments.
+*
 
-      INTEGER arg_lo_ss(6,EF_MAX_ARGS), arg_hi_ss(6,EF_MAX_ARGS),
-     .     arg_incr(6,EF_MAX_ARGS)
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
 
-      INTEGER nx, nr, lo_lim, hi_lim
+      my_hi_i = arg_hi_ss(X_AXIS,1) - arg_lo_ss(X_AXIS,1) + 1
 
-      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
-      nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
+      CALL ef_set_axis_limits(id, X_AXIS, 1, my_hi_i)
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
 
-* will add a point for each row
+      RETURN 
+      END
 
-      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
-      nr = arg_hi_ss(E_AXIS, ARG2) - arg_lo_ss( E_AXIS, ARG2) + 1
+      
+*
+* In this subroutine we request an amount of storage to be supplied
+* by Ferret and passed as an additional argument.
+*
+      SUBROUTINE piecewise1_work_size(id)
 
-      lo_lim = 1
-      hi_lim = nx + nr - 1
-      CALL ef_set_axis_limits(id, X_AXIS, lo_lim, hi_lim)
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
 
+      INTEGER id
 
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+* 
+* Set the work arrays, X/Y/Z/T/E/F dimensions
+*
+* ef_set_work_array_dims(id, array #,
+*                           xlo, ylo, zlo, tlo, 
+*                           xhi, yhi, zhi, thi)
+*
 
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
+      INTEGER npts, iwork
+
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      npts = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+  
+* input x-axis coordinates
+      iwork = 1
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                             npts, 1, 1, 1)
+
+* internal computation, u1 for y1
+      iwork = 2
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                             npts, 1, 1, 1)
+
+* internal computation, v
+      iwork = 3
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                           2*npts, 1, 1, 1)
+
+* internal computation, w
+      iwork = 4
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                           2*npts, 1, 1, 1)
 *                                                                      ^
 *                                                                      |
 *                                            USER CONFIGURABLE PORTION |
 * **********************************************************************
 
-      RETURN 
+      RETURN
       END
 
 
-
 *  In this subroutine we compute the result
 * 
-      SUBROUTINE separate_compute(id, arg_1, arg_2, arg_3, result)
+      SUBROUTINE piecewise1_compute(id, arg_1, arg_2, arg_3, 
+     .         result, xpts, u1, v, w)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -176,23 +242,34 @@
       INTEGER id
 
       REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
-     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+     .           mem1lot:mem1hit)
       REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, mem2loz:mem2hiz, 
-     .           mem2lot:mem2hit, mem2loe:mem2hie, mem2lof:mem2hif)
+     .           mem2lot:mem2hit)
       REAL arg_3(mem3lox:mem3hix, mem3loy:mem3hiy, mem3loz:mem3hiz, 
-     .           mem3lot:mem3hit, mem3loe:mem3hie, mem3lof:mem3hif)
+     .           mem3lot:mem3hit)
+
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit)
 
-! We just know this is on the X axis and will be passed in and out correct.y.
-      REAL result(memreslox:memreshix)
+* Ignore the Y/Z/T/E/F dimensions in the work array since
+* they are not used and Fortran is column major
+
+      REAL xpts(wrk1lox:wrk1hix)
+
+      REAL u1(wrk2lox:wrk2hix)
+      REAL  v(wrk3lox:wrk3hix)
+      REAL  w(wrk4lox:wrk4hix)
 
 * After initialization, the 'res_' arrays contain indexing information 
 * for the result axes.  The 'arg_' arrays will contain the indexing 
 * information for each variable's axes. 
 
-      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr (6)
-      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
-     .        arg_hi_ss(6,EF_MAX_ARGS),
-     .        arg_incr (6,EF_MAX_ARGS)
+      INTEGER res_lo_ss(4),
+     .        res_hi_ss(4),
+     .        res_incr (4)
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
 
       REAL bad_flag(EF_MAX_ARGS), bad_flag_result
 
@@ -202,53 +279,49 @@
 *                                                                      |
 *                                                                      V
 
-      INTEGER i, i1, ir, k, m
-      INTEGER nx, ne, msum, rend
-      REAL fixlon, tol, nothing
-      LOGICAL ifix
+      INTEGER i,  k
+      INTEGER nx, nout1, ip
+      REAL val, tol, bad_y
+      CHARACTER*100 errtxt
 
-      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
-      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_res_subscripts(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
       CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
 
-      k = res_lo_ss(Z_AXIS)  ! index for unused dimensions
+* Control parameter IP
+
+      CALL ef_get_one_val(id, ARG2, val)
+      IP = INT(val)
+
+* Tolerances
+
+      CALL ef_get_one_val(id, ARG3, tol)
+
+*  Set x coordinate - abstract axis.
 
       nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
-      ne = arg_hi_ss(E_AXIS, ARG2) - arg_lo_ss(E_AXIS, ARG2) + 1
-
-      CALL ef_get_one_val(id, arg3, fixlon)
-      ifix =  (fixlon .GT. 0.8)
-      tol = 200.
-
-      i1 = 1
-      ir = 1
-      msum = 0
-      DO m = arg_lo_ss(E_AXIS,ARG2), arg_hi_ss(E_AXIS, ARG2)
-         rend = arg_2(k,k,k,k,m,k)
-	 msum = msum + rend
-	 IF (msum .GT. nx) msum = nx+1
-	 DO i = i1, msum
-	    result(ir) = arg_1(i,k,k,k,k,k)
-	    IF (ir.GT.1 .AND. ifix .AND. 
-     .              result(ir ).NE.bad_flag_result .AND. 
-     .              result(ir-1).NE.bad_flag_result) THEN
-	       IF ( result(ir)-result(ir-1) .GT. tol) 
-     .               result(ir) = result(ir) - 360.
-	       IF ( result(ir)-result(ir-1) .LT. -1*tol) 
-     .               result(ir) = result(ir) + 360.
-               
-            ENDIF
-	    ir = ir + 1
-	    IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
-	 ENDDO
-	 i1 = msum+1
-	 result(ir) = bad_flag_result
-	 ir = ir + 1
-	 IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
-      ENDDO
-
- 9000 RETURN
-c 999  CALL EF_BAIL_OUT(id, errtxt)
+      DO 50 i = 1, nx
+         xpts(i) = i
+  50  CONTINUE
+
+      k = res_lo_ss(Z_AXIS)  ! index for unused dimensions
+
+* STL2 modified to truncate result to next lowest integer
+
+      bad_y = bad_flag(ARG1)
+      CALL STL2(xpts, arg_1, tol, nx, bad_y, bad_flag_result, 
+     .   result, v, w, nout1, IP)
+      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
+        write (errtxt,*) 'call to STL2 returns too many data', nout1
+	 GOTO 999
+      ENDIF
+
+      DO 100 i = nout1+1, res_hi_ss(X_AXIS)
+        result(i,k,k,k) = bad_flag_result
+ 100  CONTINUE
+
+      RETURN
+ 999  CALL EF_BAIL_OUT(id, errtxt)
       RETURN
 
       END
diff --git a/external_functions/decimate/piecewise2.F b/external_functions/decimate/piecewise2.F
new file mode 100644
index 0000000..8c51c3d
--- /dev/null
+++ b/external_functions/decimate/piecewise2.F
@@ -0,0 +1,403 @@
+*  piecewise2.F
+* 
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+
+* Ansley Manke June 2013
+* implements stl2, Piecewise linear approximations of fewest line segments
+* described in http://www.computer.org/csdl/proceedings/afips/1972/5079/00/50790187.pdf
+* and a somewhat later version of the code, found at
+* http://www.netlib.org/toms/510
+*
+*
+*  In this subroutine we provide information about
+*  the function.  The user configurable information 
+*  consists of the following:
+* 
+*  descr              Text description of the function
+* 
+*  num_args           Required number of arguments
+* 
+*  axis_inheritance   Type of axis for the result
+*                        ( CUSTOM, IMPLIED_BY_ARGS, NORMAL, ABSTRACT )
+*                        CUSTOM          - user defined axis
+*                        IMPLIED_BY_ARGS - same axis as the incoming argument
+*                        NORMAL          - the result is normal to this axis
+*                        ABSTRACT        - an axis which only has index values
+* 
+*  piecemeal_ok       For memory optimization:
+*                        axes where calculation may be performed piecemeal
+*                        ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE piecewise2_init(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id, arg
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      CALL ef_set_desc(id,
+     . 'Return indices to sample from piecewise linear interpolation of 2 vars' )
+
+      CALL ef_set_num_args(id, 5) 
+      CALL ef_set_has_vari_args(id, NO)
+      CALL ef_set_axis_inheritance(id, ABSTRACT, NORMAL, 
+     .                                              NORMAL,   NORMAL)
+      CALL ef_set_piecemeal_ok(id, NO, NO, NO, NO)
+      CALL ef_set_num_work_arrays(id, 5)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'V1')
+      CALL ef_set_arg_desc(id, arg, '1st variable to sample')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'V2')
+      CALL ef_set_arg_desc(id, arg, '2nd variable to sample')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
+      arg = 3
+      CALL ef_set_arg_name(id, arg, 'Control parameter')
+      CALL ef_set_arg_desc(id, arg,
+     .          'Control parameter (e.g. 6 for ntol=rest=cont=1)')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
+      arg = 4
+      CALL ef_set_arg_name(id, arg, 'Tol1')
+      CALL ef_set_arg_desc(id, arg, 'Tolerance for V1')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
+      arg = 5
+      CALL ef_set_arg_name(id, arg, 'Tol2')
+      CALL ef_set_arg_desc(id, arg, 'Tolerance for V2')
+      CALL ef_set_axis_influence(id, arg, NO, NO, NO, NO)
+
+
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* lo_ss               lo subscript for an axis
+*
+* hi_ss               hi subscript for an axis
+*
+
+      SUBROUTINE piecewise2_result_limits(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      INTEGER my_hi_i
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
+
+*
+*     Use utility functions to get context information about the arguments.
+*
+
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      my_hi_i = arg_hi_ss(X_AXIS,1) - arg_lo_ss(X_AXIS,1) + 1
+
+      CALL ef_set_axis_limits(id, X_AXIS, 1, my_hi_i)
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+      
+*
+* In this subroutine we request an amount of storage to be supplied
+* by Ferret and passed as an additional argument.
+*
+      SUBROUTINE piecewise2_work_size(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+* 
+* Set the work arrays, X/Y/Z/T/E/F dimensions
+*
+* ef_set_work_array_dims(id, array #,
+*                           xlo, ylo, zlo, tlo, 
+*                           xhi, yhi, zhi, thi)
+*
+
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
+      INTEGER npts, iwork
+
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      npts = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+  
+* input x-axis coordinates
+      iwork = 1
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                             npts+10, 1, 1, 1)
+
+* internal computation, u1 for y1
+      iwork = 2
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                             npts+10, 1, 1, 1)
+
+* internal computation, u2 for y2
+      iwork = 3
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                             npts+10, 1, 1, 1)
+
+* internal computation, v
+      iwork = 4
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                           2*npts+10, 1, 1, 1)
+
+* internal computation, w
+      iwork = 5
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                           2*npts+10, 1, 1, 1)
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN
+      END
+
+
+*  In this subroutine we compute the result
+* 
+      SUBROUTINE piecewise2_compute(id, arg_1, arg_2, arg_3, arg_4, 
+     .        arg_5, result, xpts, u1, u2, v, w)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+      INTEGER id
+
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, mem2loz:mem2hiz, 
+     .           mem2lot:mem2hit)
+      REAL arg_3(mem3lox:mem3hix, mem3loy:mem3hiy, mem3loz:mem3hiz, 
+     .           mem3lot:mem3hit)
+      REAL arg_4(mem4lox:mem4hix, mem4loy:mem4hiy, mem4loz:mem4hiz, 
+     .           mem4lot:mem4hit)
+      REAL arg_5(mem5lox:mem5hix, mem5loy:mem5hiy, mem5loz:mem5hiz, 
+     .           mem5lot:mem5hit)
+
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit)
+
+* Ignore the Y/Z/T/E/F dimensions in the work array since
+* they are not used and Fortran is column major
+
+      REAL xpts(wrk1lox:wrk1hix)
+
+      REAL u1(wrk2lox:wrk2hix)
+      REAL u2(wrk3lox:wrk3hix)
+      REAL  v(wrk4lox:wrk4hix)
+      REAL  w(wrk5lox:wrk5hix)
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable's axes. 
+
+      INTEGER res_lo_ss(4),
+     .        res_hi_ss(4),
+     .        res_incr (4)
+      INTEGER arg_lo_ss(4,EF_MAX_ARGS),
+     .        arg_hi_ss(4,EF_MAX_ARGS),
+     .        arg_incr (4,EF_MAX_ARGS)
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER i,  k
+      INTEGER nx, nout1, nout2, nmerge1, ip
+      REAL val, tol(2), bad_y
+      CHARACTER*100 errtxt
+
+      CALL ef_get_res_subscripts(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+* Initialize
+      nx = 0
+      nout1 = 0
+      nout2 = 0
+      nmerge1 = 0
+
+* Control parameter IP
+
+      CALL ef_get_one_val(id, ARG3, val)
+      IP = INT(val)
+
+* Tolerances
+
+      CALL ef_get_one_val(id, ARG4, tol(1))
+
+      CALL ef_get_one_val(id, ARG5, tol(2))
+
+*  Set x coordinate - abstract axis.
+
+      nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
+      DO 50 i = 1, nx
+         xpts(i) = i
+  50  CONTINUE
+
+      k = res_lo_ss(Z_AXIS)  ! index for unused dimensions
+
+* Find piecewise fit for each array then merge the indices
+* Set the work arrays to 0's so we arent using spurious data. 
+* If the function returns too many points, just return all indices
+
+* STL2 modified to truncate result to next lowest integer
+
+      bad_y = bad_flag(ARG1)
+      CALL STL2(xpts, arg_1, tol(1), nx, bad_y, bad_flag_result, 
+     .   u1, v, w, nout1, IP)
+      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
+         nout1 = nx
+         DO 100 i = 1, nx
+	    u1(i) = FLOAT(i)
+ 100     CONTINUE
+      ENDIF
+      
+      DO 110 i = nout1+1, wrk2hix
+         u1(i) = 0.
+ 110  CONTINUE
+
+      bad_y = bad_flag(ARG2)
+      CALL STL2(xpts, arg_2, tol(2), nx, bad_y, bad_flag_result, 
+     .   u2, v, w, nout2, IP)
+      IF (nout2 .GT. res_hi_ss(X_AXIS)) THEN
+         nout2 = nx
+         DO 200 i = 1, nx
+	    u2(i) = FLOAT(i)
+ 200     CONTINUE
+      ENDIF
+
+      DO 210 i = nout2+1, wrk3hix
+         u2(i) = 0.
+ 210  CONTINUE
+
+* Truncate result(j=1) to next lowest integer - its going to be
+* the set of coordinate values to sample at.
+
+      DO 300 i = 1, nout1+nout2
+	 w(i) = 0.
+ 300  CONTINUE
+
+      CALL merge (u1,nout1,u2,nout2,w,nmerge1,wrk5hix)
+      
+      IF ((nmerge1 .EQ. res_hi_ss(X_AXIS)) .OR. 
+     .    (nmerge1 .EQ. res_hi_ss(X_AXIS)+1) ) THEN
+        nmerge1 = res_hi_ss(X_AXIS)  ! Returning all the data
+
+      ELSE IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
+        write (errtxt,*) 'nmerge1 too large', nmerge1
+	 GOTO 999
+      ENDIF
+
+      DO 400 i = 1, nmerge1
+        result(i,k,k,k) = w(i)
+ 400  CONTINUE
+
+      DO 500 i = nmerge1+1, res_hi_ss(X_AXIS)
+        result(i,k,k,k) = bad_flag_result
+ 500  CONTINUE
+
+      RETURN
+ 999  CALL EF_BAIL_OUT(id, errtxt)
+      RETURN
+
+      END
diff --git a/external_functions/decimate/piecewise3.F b/external_functions/decimate/piecewise3.F
index f034d37..3322572 100644
--- a/external_functions/decimate/piecewise3.F
+++ b/external_functions/decimate/piecewise3.F
@@ -87,14 +87,14 @@
 *                                                                      V
 
       CALL ef_set_desc(id,
-     . 'Return indices to sample from piecewise linear interpolation' )
+     . 'Return indices to sample from piecewise linear interpolation of 3 vars' )
 
       CALL ef_set_num_args(id, 7) 
       CALL ef_set_has_vari_args(id, NO)
       CALL ef_set_axis_inheritance(id, ABSTRACT, NORMAL, 
      .                                              NORMAL,   NORMAL)
       CALL ef_set_piecemeal_ok(id, NO, NO, NO, NO)
-      CALL ef_set_num_work_arrays(id, 6)
+      CALL ef_set_num_work_arrays(id, 7)
 
       arg = 1
       CALL ef_set_arg_name(id, arg, 'V1')
@@ -218,42 +218,49 @@
       CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
 
       npts = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
-  
+      npts = 2*npts
+
 * input x-axis coordinates
       iwork = 1
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                             npts, 1, 1, 1)
+     .                             npts+10, 1, 1, 1)
 
 * internal computation, u1 for y1
       iwork = 2
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                             npts, 1, 1, 1)
+     .                             npts+10, 1, 1, 1)
 
 * internal computation, u2 for y2
       iwork = 3
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                             npts, 1, 1, 1)
+     .                             npts+10, 1, 1, 1)
 
 * internal computation, u3 for y3
       iwork = 4
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                             npts, 1, 1, 1)
+     .                             npts+10, 1, 1, 1)
 
 * internal computation, v
       iwork = 5
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                           2*npts, 1, 1, 1)
+     .                           2*npts+10, 1, 1, 1)
 
 * internal computation, w
       iwork = 6
       CALL ef_set_work_array_dims(id, iwork,
      .                                1, 1, 1, 1,
-     .                           2*npts, 1, 1, 1)
+     .                           2*npts+10, 1, 1, 1)
+
+* data w/o gaps
+      iwork = 7
+      CALL ef_set_work_array_dims(id, iwork,
+     .                                1, 1, 1, 1,
+     .                           npts+10, 1, 1, 1)
 *                                                                      ^
 *                                                                      |
 *                                            USER CONFIGURABLE PORTION |
@@ -266,7 +273,7 @@
 *  In this subroutine we compute the result
 * 
       SUBROUTINE piecewise3_compute(id, arg_1, arg_2, arg_3, arg_4, 
-     .        arg_5, arg_6, arg_7, result, xpts, u1, u2, u3, v, w)
+     .        arg_5, arg_6, arg_7, result, xpts, u1, u2, u3, v, w, yf)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -302,6 +309,7 @@
       REAL u3(wrk4lox:wrk4hix)
       REAL  v(wrk5lox:wrk5hix)
       REAL  w(wrk6lox:wrk6hix)
+      REAL yf(wrk7lox:wrk7hix)
 
 * After initialization, the 'res_' arrays contain indexing information 
 * for the result axes.  The 'arg_' arrays will contain the indexing 
@@ -322,8 +330,8 @@
 *                                                                      |
 *                                                                      V
 
-      INTEGER i,  k
-      INTEGER nx, nout1, nout2, nout3, nmerge1, nmerge2, ip
+      INTEGER i, j, k, l
+      INTEGER nx, nout1, nout2, nout3, nmerge1, nmerge2, ip, icount
       REAL val, tol(3), bad_y
       CHARACTER*100 errtxt
 
@@ -331,6 +339,14 @@
       CALL ef_get_arg_subscripts(id, arg_lo_ss, arg_hi_ss, arg_incr)
       CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
 
+* Initialize
+      nx = 0
+      nout1 = 0
+      nout2 = 0
+      nout3 = 0
+      nmerge1 = 0
+      nmerge2 = 0
+
 * Control parameter IP
 
       CALL ef_get_one_val(id, ARG4, val)
@@ -353,539 +369,111 @@
 
       k = res_lo_ss(Z_AXIS)  ! index for unused dimensions
 
+* Find piecewise fit for each array then merge the indices
+* Set the work arrays to 0's so we arent using spurious data
+* If the function returns too many points, just return all indices
+
+
 * STL2 modified to truncate result to next lowest integer
 
       bad_y = bad_flag(ARG1)
       CALL STL2(xpts, arg_1, tol(1), nx, bad_y, bad_flag_result, 
      .   u1, v, w, nout1, IP)
       IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
-        write (errtxt,*) 'first call to STL2 returns too many data', nout1
-	 GOTO 999
+         nout1 = nx
+         DO 100 i = 1, nx
+	    u1(i) = FLOAT(i)
+ 100     CONTINUE
       ENDIF
+      
+      DO 110 i = nout1+1, wrk2hix
+         u1(i) = 0.
+ 110  CONTINUE
 
       bad_y = bad_flag(ARG2)
       CALL STL2(xpts, arg_2, tol(2), nx, bad_y, bad_flag_result, 
      .   u2, v, w, nout2, IP)
-      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
-        write (errtxt,*) 'second call to STL2 returns too many data', nout2
-	 GOTO 999
+      IF (nout2 .GT. res_hi_ss(X_AXIS)) THEN
+         nout2 = nx
+         DO 200 i = 1, nx
+	    u2(i) = FLOAT(i)
+ 200     CONTINUE
       ENDIF
 
+      DO 210 i = nout2+1, wrk3hix
+         u2(i) = 0.
+ 210  CONTINUE
+
+      
+* Skip over gaps in the data array, keeping good data and indices where
+* good data lies. Decimate this instead.
+
       bad_y = bad_flag(ARG3)
-      CALL STL2(xpts, arg_3, tol(3), nx, bad_y, bad_flag_result, 
+
+      j = arg_lo_ss(Y_AXIS, ARG3)
+      k = arg_lo_ss(Z_AXIS, ARG3)
+      l = arg_lo_ss(T_AXIS, ARG3)
+
+      icount = 0
+      DO 220 i = 1, nx
+         IF (arg_3(i,j,k,l) .NE. bad_y) THEN
+	    icount = icount + 1
+	    xpts(icount) = xpts(i)
+	    yf(icount) = arg_3(i,j,k,l)
+	 ENDIF
+ 220  CONTINUE
+
+      CALL STL2(xpts, yf, tol(3), icount, bad_y, bad_flag_result, 
      .   u3, v, w, nout3, IP)
-      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
-        write (errtxt,*) 'third call to STL2 returns too many data', nout3
-	 GOTO 999
+      IF (nout3 .GT. res_hi_ss(X_AXIS)) THEN
+         nout3 = nx
+         DO 300 i = 1, nx
+	    u3(i) = FLOAT(i)
+ 300     CONTINUE
       ENDIF
 
+      DO 310 i = nout3+1, wrk4hix
+         u3(i) = 0.
+ 310  CONTINUE
+
 * Truncate result(j=1) to next lowest integer - its going to be
 * the set of coordinate values to sample at.
 
-      DO 100 i = 1, nout1+nout2
+      DO 400 i = 1, wrk6hix
 	 w(i) = 0.
- 100  CONTINUE
+ 400  CONTINUE
 
-      CALL merge (u1,nout1,u2,nout2,w,nmerge1)
-      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
+      CALL merge (u1,nout1,u2,nout2,w,nmerge1,wrk6hix)
+      IF (nmerge1 .GT. res_hi_ss(X_AXIS)) THEN
         write (errtxt,*) 'nmerge1 too large', nmerge1
 	 GOTO 999
       ENDIF
 
-      DO 200 i = 1, nout1+nout2
+      DO 500 i = 1, wrk5hix
 	 v(i) = 0.
- 200  CONTINUE
+ 500  CONTINUE
+      DO 510 i = nmerge1+1, wrk6hix
+	 w(i) = 0.
+ 510  CONTINUE
 
-      CALL merge (w,nmerge1,u3,nout3,v,nmerge2)
-	      IF (nout1 .GT. res_hi_ss(X_AXIS)) THEN
-        write (errtxt,*) 'nmerge2 too large', nmerge2
+      CALL merge (w,nmerge1,u3,nout3,v,nmerge2,wrk5hix)
+      IF ((nmerge2 .EQ. res_hi_ss(X_AXIS)) .OR. 
+     .    (nmerge2 .EQ. res_hi_ss(X_AXIS)+1) ) THEN
+        nmerge2 = res_hi_ss(X_AXIS)  ! Returning all the data
+      ELSE IF (nmerge2 .GT. res_hi_ss(X_AXIS)) THEN
 	 GOTO 999
       ENDIF
 
-      DO 300 i = 1, nmerge2
+      DO 600 i = 1, nmerge2
         result(i,k,k,k) = v(i)
- 300  CONTINUE
+ 600  CONTINUE
 
-      DO 400 i = nmerge2+1, res_hi_ss(X_AXIS)
+      DO 700 i = nmerge2+1, res_hi_ss(X_AXIS)
         result(i,k,k,k) = bad_flag_result
- 400  CONTINUE
+ 700  CONTINUE
 
       RETURN
  999  CALL EF_BAIL_OUT(id, errtxt)
       RETURN
 
       END
-
-      SUBROUTINE STL2(X, Y, E, M, bad_y, bad_out, U, V, W, K, IP)
-
-C PIECEWISE LINEAR APPROXIMATIONS OF FEWEST
-C LINE SEGMENTS WITHIN GIVEN TOLERANCES.
-
-C X,Y,E AND M CONTAIN INPUT DATA.
-C U,V,K AND POSSIBLY W CONTAIN OUTPUT.
-
-C IP IS A PARAMETER DETERMINING THE OPERATION
-C  OF THE PROGRAM.
-
-C X AND Y ARE INPUT DATA ARRAYS OF M ELEMENTS
-C  X(I),Y(I) CONTAINS THE ITH DATA POINT.
-
-C E MAY BE A SINGLE TOLERANCE OR A TABLE OF
-C  TOLERANCES DEPENDING ON THE VALUE OF IP.
-C IF E IS AN ARRAY, THEN E(I) IS THE TOLERANCE
-C  ASSOCIATED WITH X(I),Y(I) AND E MUST CONTAIN
-C  M NONNEGATIVE ELEMENTS.
-
-C U AND V ARE OUTPUT ARRAYS OF K+1 ELEMENTS.
-C  U IS A PARTITION OF THE INTERVAL (X(1),X(N))
-C  WITH U(1)=X(1) AND U(K+1)=X(N).
-C  V(I) IS AN ORDINATE TO BE ASSOCIATED WITH
-C  U(I) IN THE APPROXIMATION.  (IF A CONTINUOUS
-C  APPROXIMATION IS REQUESTED, THEN V(I) IS
-C  'THE' ORDINATE TO BE ASSOCIATED WITH U(I).)
-
-C IF A CONTINUOUS APPROXIMATION IS REQUESTED,
-C  THEN W IS NOT USED.  IN THIS CASE THE ITH
-C  APPROXIMATING SEGMENT IS THE STRAIGHT LINE
-C  FROM U(I),V(I) TO U(I+1),V(I+1).
-
-C IF A CONTINUOUS APPROXIMATION IS NOT
-C  REQUESTED, THEN W IS A K-ELEMENT OUTPUT
-C  ARRAY.  IN THIS CASE THE ITH APPROXIMATING
-C  SEGMENT IS THE STRAIGHT LINE FROM
-C  U(I),W(I) TO U(I+1),V(I+1), AND V(1) IS
-C  SET EQUAL TO W(1).
-
-C K IS THE NUMBER OF SEGMENTS IN THE PIECE-
-C  WISE LINEAR APPROXIMATION GENERATED.  IN
-C  CASE OF AN ERROR RETURN, K WILL BE SET TO
-C  ZERO.
-
-C THE CONTROL PARAMETER IP IS THE PRODUCT
-C  OF THREE INDICATORS I1,I2 AND I3.
-C  I1 INDICATES WHETHER OR NOT E IS AN
-C     ARRAY OF TOLERANCES.
-C     I1 = -1 INDICATES E IS AN ARRAY
-C     I1 = +1 INDICATES E IS A SINGLE NUMBER.
-C  I2 INDICATES WHETHER OR NOT THE
-C     APPROXIMATION IS TO BE RESTRICTED TO
-C     THE 'TOLERANCE BAND' ABOUT THE DATA.
-C     I2 = 1 INDICATES NO BAND RESTRICTION
-C     I2 = 2 INDICATES APPLY THIS RESTRICTION
-C     (THE 'TOLERANCE BAND' IS A PIECEWISE
-C     LINEAR BAND CENTERED AT THE DATA WHOSE
-C     WIDTH IS DETERMINED BY THE TOLERANCES
-C     AT THE DATA POINTS.)
-C  I3 INDICATES WHETHER OR NOT THE
-C     APPROXIMATION MUST BE CONTINUOUS.
-C     I3 = 1 INDICATES CONTINUITY NOT REQUIRED
-C     I3 = 3 INDICATES CONTINUITY IS REQUIRED
-
-C CALL STL2 (X,Y,E,M,X,Y,E,M,IP) WILL NOT
-C  CAUSE PROBLEMS PROVIDED THAT
-C  EITHER A CONTINUOUS APPROXIMATION IS
-C  REQUESTED, OR E IS A SUFFICIENTLY LARGE
-C  ARRAY.
-
-C THE PROGRAM PERFORMS THE FOLLOWING DATA
-C  CHECKS.  ARE THE X-VALUES IN INCREASING
-C  ORDER.  ARE THE TOLERANCE(S) NONNEGATIVE.
-C  IS THE NUMBER OF DATA POINTS GREATER THAN
-C  ONE.  IF ANY CHECK FAILS, THE PROGRAM
-C  RETURNS WITH K SET EQUAL TO 0.  IN THIS
-C  CASE NO FURTHER PROCESSING IS ATTEMPTED.
-
-      IMPLICIT NONE
-* Calling arguments
-      REAL X(*), Y(*), E(*), U(*), V(*), W(*), bad_y, bad_out
-      INTEGER M, K, IP
-
-* Local declarations
-      LOGICAL skipbad
-      INTEGER N, ITCH, I, J, L, KEEP, INIT, INDC, IGRAZE,
-     .        IDIOT, IT, IPIV, KP
-      REAL EPSLN, SGN, XEYE, YEYE, TEMP1, SMIN, DX, 
-     .     SVX, SVY, SVMN, TEMP2, XINIT, YINIT, SLOPE, SMAX, 
-     .     SVMX, TEST
-
-      N = M
-      ITCH = IP
-      J = 1
-C ERROR CHECKS
-      IF (N.LE.1) GO TO 400
-      IF (E(1).LT.0.0) GO TO 400
-      DO 10 L=2,N
-        IF (X(L-1).GE.X(L)) GO TO 400
-        IF (ITCH.GE.0) GO TO 10
-        IF (E(L).LT.0.0) GO TO 400
-   10 CONTINUE
-C INITIALIZATION FOR ENTIRE PROGRAM
-      EPSLN = E(1)
-      SGN = 1.0
-      KEEP = 1
-      I = 1
-
-      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
-      IF (skipbad) GOTO 30
-
-      U(i) = X(i)
-      J = 2
-      INIT = 1
-      INDC = 0
-      GO TO 30
-C INITIALIZATION FOR EACH SEGMENT
-   20 CONTINUE
-      J = J + 1
-      INIT = I
-      INDC = 0
-      IF (IABS(ITCH).LT.3) KEEP = I
-      IF (IABS(IABS(ITCH)-4).NE.2) GO TO 30
-C RESTRICTED TO TOLERANCE BAND
-      XEYE = U(J-1)
-      YEYE = V(J-1)
-      TEMP1 = EPSLN
-      IF (ITCH.LT.0) TEMP1 = TEMP1 + (SGN*E(I-1)-EPSLN)*(X(I)-U(J-1)
-     * )/(X(I)-X(I-1))
-      YINIT = YEYE - TEMP1 - TEMP1
-      GO TO 40
-   30 CONTINUE
-C NOT RESTRICTED TO TOLERANCE BAND
-      XEYE = X(I)
-      YEYE = Y(I) + EPSLN
-      YINIT = Y(I) - EPSLN
-      IF (IABS(ITCH).EQ.1 .OR. I.EQ.1) GO TO 40
-      TEMP1 = EPSLN
-      IF (ITCH.LT.0) TEMP1 = SGN*E(I+1)
-      SMIN = (Y(I+1)-YEYE-TEMP1)/(X(I+1)-XEYE)
-      IF (ITCH.LT.0) TEMP1 = SGN*E(I-1)
-      SMAX = (YEYE-Y(I-1)+TEMP1)/(XEYE-X(I-1))
-
-      IF (KEEP.EQ.I-1) GO TO 50
-      IT = I - 2
-      XINIT = XEYE
-      IPIV = I
-      IGRAZE = I
-      I = I + 1
-
-      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
-      IF (skipbad) GOTO 30
-
-      GO TO 150
-   40 CONTINUE
-      IF (XEYE.GE.X(I)) I = I + 1
-      IF (ITCH.LT.0) EPSLN = SGN*E(I)
-      DX = X(I) - XEYE
-      SMAX = (Y(I)+EPSLN-YEYE)/DX
-      SMIN = (Y(I)-EPSLN-YEYE)/DX
-   50 CONTINUE
-      XINIT = XEYE
-      IPIV = I
-      IGRAZE = I
-C DETERMINATION OF INDIVIDUAL SEGMENT
-   60 CONTINUE
-      IF (I.EQ.N) GO TO 260
-      I = I + 1
-      
-C New i, so does it point to a bad-val?
-
-      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
-      IF (skipbad) GOTO 30
-
-   70 CONTINUE
- 
-C TEST FOR NEW *MAX* SLOPE
-      DX = X(I) - XEYE
-      IF (ITCH.LT.0) EPSLN = SGN*E(I)
-      TEMP1 = (Y(I)+EPSLN-YEYE)/DX
-      TEST = TEMP1 - SMAX
-      IF (SGN.LE.0.0) TEST = -TEST
-      IF (TEST) 80, 90, 100
-   80 CONTINUE
-C TEST FOR END OF CANDIDATE SEGMENT
-      TEST = TEMP1 - SMIN
-      IF (SGN.LE.0.0) TEST = -TEST
-      IF (TEST.LT.0.0) GO TO 210
-      SMAX = TEMP1
-   90 CONTINUE
-C TEST FOR NEW *MIN* SLOPE
-      IPIV = I
-  100 CONTINUE
-      TEMP2 = (Y(I)-EPSLN-YEYE)/DX
-      TEST = TEMP2 - SMAX
-      IF (SGN.LE.0.0) TEST = -TEST
-      IF (TEST) 110, 120, 140
-  110 CONTINUE
-      TEST = SMIN - TEMP2
-      IF (SGN.LE.0.0) TEST = -TEST
-      IF (TEST) 120, 130, 60
-  120 CONTINUE
-      SMIN = TEMP2
-  130 CONTINUE
-      IGRAZE = I
-      GO TO 60
-C CHECK FOR PIVOT AT NEW EYE POINT
-  140 CONTINUE
-      IF (XEYE.EQ.X(IPIV)) GO TO 220
-      IF (ITCH.LT.0) EPSLN = SGN*E(IPIV)
-      INDC = 1
-      SVX = XEYE
-      SVY = YEYE
-      SVMN = SMIN
-      SVMX = SMAX
-      XEYE = X(IPIV)
-      YEYE = Y(IPIV) + EPSLN
-      SMIN = SMAX
-      SMAX = (YINIT-YEYE)/(XINIT-XEYE)
-      IF (KEEP.GE.IPIV) GO TO 170
-      IT = IPIV - 1
-  150 CONTINUE
-      TEMP2 = YEYE + EPSLN
-      DO 160 L=KEEP,IT
-        IF (ITCH.LT.0) TEMP2 = YEYE + SGN*E(L)
-        TEMP1 = (Y(L)-TEMP2)/(X(L)-XEYE)
-        TEST = TEMP1 - SMAX
-        IF (SGN.LE.0.0) TEST = -TEST
-        IF (TEST.LT.0.0) SMAX = TEMP1
-  160 CONTINUE
-  170 CONTINUE
-      IF (IPIV.GE.I-1) GO TO 70
-      IT = I - 2
-      TEMP2 = YEYE - EPSLN
-      IDIOT = IPIV
-      DO 200 L=IDIOT,IT
-        DX = X(L+1) - XEYE
-        IF (ITCH.LT.0) TEMP2 = YEYE - SGN*E(L+1)
-        TEMP1 = (Y(L+1)-TEMP2)/DX
-        TEST = TEMP1 - SMAX
-        IF (SGN.LE.0.0) TEST = -TEST
-        IF (TEST) 180, 190, 200
-  180   CONTINUE
-        SMAX = TEMP1
-  190   CONTINUE
-        IPIV = L + 1
-  200 CONTINUE
-      GO TO 70
-C END OF CURRENT SEGMENT
-  210 CONTINUE
-      TEMP2 = SMIN
-      IF (I.EQ.N) GO TO 240
-      KEEP = IGRAZE
-      GO TO 250
-  220 CONTINUE
-      TEMP2 = SMAX
-      IF (I.EQ.N) GO TO 230
-      SGN = -SGN
-      EPSLN = -EPSLN
-      KEEP = IPIV
-      GO TO 250
-  230 CONTINUE
-      IF (INDC.EQ.0 .OR. XEYE.NE.X(N-1)) GO TO 240
-      XEYE = SVX
-      YEYE = SVY
-      SMIN = SVMN
-      SMAX = SVMX
-  240 CONTINUE
-      U(J) = X(N-1)
-      YINIT = Y(N-1)
-      GO TO 270
-  250 CONTINUE
-      IF (IABS(IABS(ITCH)-4).NE.2) GO TO 300
-C DETERMINE KNOT ON EDGE OF TOLERANCE BAND
-      TEMP1 = 0.0
-      IF (ITCH.LT.0) TEMP1 = EPSLN - SGN*E(I-1)
-      TEMP1 = (Y(I)-Y(I-1)+TEMP1)/(X(I)-X(I-1))
-      
-      U(J) = (Y(I)+EPSLN-YEYE-TEMP1*X(I)+TEMP2*XEYE)/(TEMP2-TEMP1)
-
-      GO TO 310
-  260 CONTINUE
-      U(J) = X(N)
-      YINIT = Y(N)
-  270 CONTINUE
-C CONTINUITY CHECK FOR LAST SEGMENT
-      IF (IABS(ITCH).GE.3 .OR. INIT.EQ.1) GO TO 290
-      IT = INIT - 1
-      SVMX = SMAX + SGN
-      TEMP2 = YEYE + EPSLN
-      DO 280 L=KP,IT
-        IF (ITCH.LT.0) TEMP2 = YEYE + SGN*E(L)
-        TEMP1 = (Y(L)-TEMP2)/(X(L)-XEYE)
-        TEST = TEMP1 - SVMX
-        IF (SGN.LE.0.0) TEST = -TEST
-        IF (TEST.LT.0.0) SVMX = TEMP1
-  280 CONTINUE
-      IF (ABS(SVMX-SMAX+SVMX-SMIN).LE.ABS(SMAX-SMIN)) SMAX = SVMX
-  290 CONTINUE
-C NEARNESS CHECK FOR LAST SEGMENT
-      TEMP2 = SMAX
-      TEMP1 = YEYE + SMAX*(U(J)-XEYE)
-      TEST = YINIT - TEMP1
-      IF (SGN.LT.0.0) TEST = -TEST
-      IF (TEST.GT.0.0) GO TO 310
-      TEMP2 = SMIN
-      TEMP1 = YEYE + SMIN*(U(J)-XEYE)
-      TEST = YINIT - TEMP1
-      IF (SGN.LT.0.0) TEST = -TEST
-      IF (TEST.LT.0.0) GO TO 310
-      TEMP2 = (YINIT-YEYE)/(U(J)-XEYE)
-      V(J) = YINIT
-      GO TO 320
-  300 CONTINUE
-      IF (IABS(ITCH).GE.3) GO TO 330
-      U(J) = 0.5*(X(I)+X(I-1))
-  310 CONTINUE
-      V(J) = YEYE + TEMP2*(U(J)-XEYE)
-  320 CONTINUE
-      IF (XEYE.NE.XINIT) GO TO 330
-      IF (IABS(ITCH).EQ.2) GO TO 360
-      IF (IABS(ITCH).NE.6) GO TO 330
-      IF (J.LE.2) GO TO 380
-      GO TO 390
-  330 CONTINUE
-C RECOMPUTATION OF KNOT FOR CONTINUITY
-      IF (J.LE.2) GO TO 370
-      IF (SLOPE.EQ.TEMP2) GO TO 360
-      YINIT = V(J-2)
-      IF (IABS(ITCH).LT.3) YINIT = W(J-2)
-      TEMP1 = (XEYE*TEMP2-U(J-2)*SLOPE+YINIT-YEYE)/(TEMP2-SLOPE)
-      IF (IABS(ITCH).GE.3) GO TO 350
-      IF (TEMP1.GT.XINIT) GO TO 360
-      TEST = ABS(EPSLN)
-      IDIOT = INIT - KP
-      DO 340 L=1,IDIOT
-        IT = INIT - L
-        IF (TEMP1.GE.X(IT)) GO TO 350
-        DX = Y(IT) - YEYE - TEMP2*(X(IT)-XEYE)
-        IF (ITCH.LT.0) TEST = E(IT)
-        IF (ABS(DX).GT.TEST) GO TO 360
-  340 CONTINUE
-  350 CONTINUE
-      U(J-1) = TEMP1
-      V(J-1) = YEYE + TEMP2*(U(J-1)-XEYE)
-      IF (IABS(ITCH).LT.3) W(J-1) = V(J-1)
-      GO TO 390
-  360 CONTINUE
-      W(J-1) = YEYE + TEMP2*(U(J-1)-XEYE)
-      GO TO 390
-  370 CONTINUE
-      IF (IABS(ITCH).LT.3) GO TO 360
-  380 CONTINUE
-      V(1) = YEYE + TEMP2*(U(1)-XEYE)
-  390 CONTINUE
-      SLOPE = TEMP2
-      KP = KEEP
-      IF (I.LT.N) GO TO 20
-      IF (X(N).EQ.U(J)) GO TO 400
-      IF (IABS(ITCH).LT.3) W(J) = V(J)
-      J = J + 1
-      U(J) = X(N)
-      V(J) = Y(N)
-  400 CONTINUE
-      IF (J.GE.2 .AND. IABS(ITCH).LT.3) V(1) = W(1)
-      K = J
-
-* Truncate to integer values: indices at which to sample
-
-      DO 500 I = 1, K
-         u(i) = INT(u(i))
-  500 CONTINUE
-
-      RETURN
-      END
-
-      SUBROUTINE PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, 
-     .   n, skipbad)
-      REAL Y(*), bad_y, x(*), u(*)
-      INTEGER i, j, n
-      LOGICAL skipbad
-
-      skipbad = .FALSE.
-	 
-      IF ( Y(i).EQ.bad_y ) THEN
-	 IF (i.GT.2) THEN
-	    u(j) = x(i-1)
-	       
-	    IF ( j .gt. 1 .and. INT(u(j)) .LT. INT(u(j-1)) ) then
-	       j = j - 1
-	       DO WHILE (INT(u(j)) .LE. INT(u(j-1)) )
-		     j = j - 1
-	       ENDDO	  
-	       u(j) = x(i-1)
-	    ENDIF
-            IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
-
-            j = j + 1
-	 ENDIF
-         DO WHILE ( Y(i).EQ.bad_y .AND. i.LT.n)
-            i = i + 1
-         ENDDO
-         
-         IF (i.GT.1) u(j) = x(i-1)
-         IF (i.GE.n) THEN
-	    i = n
-	    u(j) = x(n)
-	 ENDIF
-         IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
-
-         j = j + 1
-         u(j) = x(i)
-         IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
-
-         j = j + 1
-         skipbad = .TRUE.
-      ENDIF
-
-      RETURN
-      END
-
-
-      subroutine merge(a,na,b,nb,c,nout)
-c http://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Merge_sort#Fortran
-! Normal usage: NA+NB = NC
-! B overlays C(NA+1:NC)
-
-! modified to return nout instead of assuming treating NC, length of C as known.
-
-      integer  NA,NB,NC         
-      REAL  A(*), B(*), C(*)
- 
-      integer I,J,K
- 
-      I = 1
-      J = 1
-      K = 1
-      do while(I .LE. NA .and. J .LE. NB)
-         if (A(I) .LE. B(J)) then
-            C(K) = A(I)
-            I = I+1
-         else
-            C(K) = B(J)
-            J = J+1
-         endif
-         K = K + 1
-      enddo
-      do while (I .LE. NA)
-         C(K) = A(I)
-         I = I + 1
-          K = K + 1
-      enddo
-      do while (J .LE. NB)
-         C(K) = B(J)
-         J = J+1
-         K = K + 1
-      enddo
-
-* remove duplicates
-
-      j = 1
-      do i = 2, k
-         IF (c(i) .GT. c(i-1)) then
-	    j = j + 1
-	    c(j) = c(i)
-	 endif
-      enddo
-      nout = j
-
-      return
- 
-      end ! subroutine merge
diff --git a/external_functions/decimate/piecewise_subs.F b/external_functions/decimate/piecewise_subs.F
new file mode 100644
index 0000000..ba62f8d
--- /dev/null
+++ b/external_functions/decimate/piecewise_subs.F
@@ -0,0 +1,510 @@
+
+      SUBROUTINE STL2(X, Y, E, M, bad_y, bad_out, U, V, W, K, IP)
+
+C PIECEWISE LINEAR APPROXIMATIONS OF FEWEST
+C LINE SEGMENTS WITHIN GIVEN TOLERANCES.
+
+C X,Y,E AND M CONTAIN INPUT DATA.
+C U,V,K AND POSSIBLY W CONTAIN OUTPUT.
+
+C IP IS A PARAMETER DETERMINING THE OPERATION
+C  OF THE PROGRAM.
+
+C X AND Y ARE INPUT DATA ARRAYS OF M ELEMENTS
+C  X(I),Y(I) CONTAINS THE ITH DATA POINT.
+
+C E MAY BE A SINGLE TOLERANCE OR A TABLE OF
+C  TOLERANCES DEPENDING ON THE VALUE OF IP.
+C IF E IS AN ARRAY, THEN E(I) IS THE TOLERANCE
+C  ASSOCIATED WITH X(I),Y(I) AND E MUST CONTAIN
+C  M NONNEGATIVE ELEMENTS.
+
+C U AND V ARE OUTPUT ARRAYS OF K+1 ELEMENTS.
+C  U IS A PARTITION OF THE INTERVAL (X(1),X(N))
+C  WITH U(1)=X(1) AND U(K+1)=X(N).
+C  V(I) IS AN ORDINATE TO BE ASSOCIATED WITH
+C  U(I) IN THE APPROXIMATION.  (IF A CONTINUOUS
+C  APPROXIMATION IS REQUESTED, THEN V(I) IS
+C  'THE' ORDINATE TO BE ASSOCIATED WITH U(I).)
+
+C IF A CONTINUOUS APPROXIMATION IS REQUESTED,
+C  THEN W IS NOT USED.  IN THIS CASE THE ITH
+C  APPROXIMATING SEGMENT IS THE STRAIGHT LINE
+C  FROM U(I),V(I) TO U(I+1),V(I+1).
+
+C IF A CONTINUOUS APPROXIMATION IS NOT
+C  REQUESTED, THEN W IS A K-ELEMENT OUTPUT
+C  ARRAY.  IN THIS CASE THE ITH APPROXIMATING
+C  SEGMENT IS THE STRAIGHT LINE FROM
+C  U(I),W(I) TO U(I+1),V(I+1), AND V(1) IS
+C  SET EQUAL TO W(1).
+
+C K IS THE NUMBER OF SEGMENTS IN THE PIECE-
+C  WISE LINEAR APPROXIMATION GENERATED.  IN
+C  CASE OF AN ERROR RETURN, K WILL BE SET TO
+C  ZERO.
+
+C THE CONTROL PARAMETER IP IS THE PRODUCT
+C  OF THREE INDICATORS I1,I2 AND I3.
+C  I1 INDICATES WHETHER OR NOT E IS AN
+C     ARRAY OF TOLERANCES.
+C     I1 = -1 INDICATES E IS AN ARRAY
+C     I1 = +1 INDICATES E IS A SINGLE NUMBER.
+C  I2 INDICATES WHETHER OR NOT THE
+C     APPROXIMATION IS TO BE RESTRICTED TO
+C     THE 'TOLERANCE BAND' ABOUT THE DATA.
+C     I2 = 1 INDICATES NO BAND RESTRICTION
+C     I2 = 2 INDICATES APPLY THIS RESTRICTION
+C     (THE 'TOLERANCE BAND' IS A PIECEWISE
+C     LINEAR BAND CENTERED AT THE DATA WHOSE
+C     WIDTH IS DETERMINED BY THE TOLERANCES
+C     AT THE DATA POINTS.)
+C  I3 INDICATES WHETHER OR NOT THE
+C     APPROXIMATION MUST BE CONTINUOUS.
+C     I3 = 1 INDICATES CONTINUITY NOT REQUIRED
+C     I3 = 3 INDICATES CONTINUITY IS REQUIRED
+
+C CALL STL2 (X,Y,E,M,X,Y,E,M,IP) WILL NOT
+C  CAUSE PROBLEMS PROVIDED THAT
+C  EITHER A CONTINUOUS APPROXIMATION IS
+C  REQUESTED, OR E IS A SUFFICIENTLY LARGE
+C  ARRAY.
+
+C THE PROGRAM PERFORMS THE FOLLOWING DATA
+C  CHECKS.  ARE THE X-VALUES IN INCREASING
+C  ORDER.  ARE THE TOLERANCE(S) NONNEGATIVE.
+C  IS THE NUMBER OF DATA POINTS GREATER THAN
+C  ONE.  IF ANY CHECK FAILS, THE PROGRAM
+C  RETURNS WITH K SET EQUAL TO 0.  IN THIS
+C  CASE NO FURTHER PROCESSING IS ATTEMPTED.
+
+      IMPLICIT NONE
+* Calling arguments
+      REAL X(*), Y(*), E(*), U(*), V(*), W(*), bad_y, bad_out
+      INTEGER M, K, IP
+
+* Local declarations
+      LOGICAL skipbad
+      INTEGER N, ITCH, I, J, L, KEEP, INIT, INDC, IGRAZE,
+     .        IDIOT, IT, IPIV, KP, ilo, ihi, icount
+      REAL EPSLN, SGN, XEYE, YEYE, TEMP1, SMIN, DX, 
+     .     SVX, SVY, SVMN, TEMP2, XINIT, YINIT, SLOPE, SMAX, 
+     .     SVMX, TEST
+
+* If there is a trivial amount of data in the input array then we are done
+      ilo = 0
+      ihi = 0
+      icount = 0
+      DO i = 1, m
+         IF (y(i) .NE. bad_y) THEN
+	    icount = icount + 1
+	    IF (ilo .EQ. 0) ilo = i
+	    ihi = i
+	 ENDIF
+      ENDDO
+
+      IF (icount .LE. 2) THEN
+         k = icount
+	 IF (ilo .GT. 0) u(1) = ilo
+	 IF (ihi .GT. 0) u(icount) = ihi
+	 GOTO 600
+      ENDIF
+
+      N = M
+      ITCH = IP
+      J = 1
+C ERROR CHECKS
+      IF (N.LE.1) GO TO 400
+      IF (E(1).LT.0.0) GO TO 400
+      DO 10 L=2,N
+        IF (X(L-1).GE.X(L)) GO TO 400
+        IF (ITCH.GE.0) GO TO 10
+        IF (E(L).LT.0.0) GO TO 400
+   10 CONTINUE
+C INITIALIZATION FOR ENTIRE PROGRAM
+      EPSLN = E(1)
+      SGN = 1.0
+      KEEP = 1
+      I = 1
+
+      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
+      IF (I.EQ.N) GOTO 260
+      IF (skipbad) GOTO 30
+
+      U(i) = X(i)
+      J = 2
+      INIT = 1
+      INDC = 0
+      GO TO 30
+C INITIALIZATION FOR EACH SEGMENT
+   20 CONTINUE
+      J = J + 1
+      INIT = I
+      INDC = 0
+      IF (IABS(ITCH).LT.3) KEEP = I
+      IF (IABS(IABS(ITCH)-4).NE.2) GO TO 30
+C RESTRICTED TO TOLERANCE BAND
+      XEYE = U(J-1)
+      YEYE = V(J-1)
+      TEMP1 = EPSLN
+      IF (ITCH.LT.0) TEMP1 = TEMP1 + (SGN*E(I-1)-EPSLN)*(X(I)-U(J-1)
+     * )/(X(I)-X(I-1))
+      YINIT = YEYE - TEMP1 - TEMP1
+      GO TO 40
+   30 CONTINUE
+C NOT RESTRICTED TO TOLERANCE BAND
+      XEYE = X(I)
+      YEYE = Y(I) + EPSLN
+      YINIT = Y(I) - EPSLN
+      IF (IABS(ITCH).EQ.1 .OR. I.EQ.1) GO TO 40
+      TEMP1 = EPSLN
+      IF (ITCH.LT.0) TEMP1 = SGN*E(I+1)
+      SMIN = (Y(I+1)-YEYE-TEMP1)/(X(I+1)-XEYE)
+      IF (ITCH.LT.0) TEMP1 = SGN*E(I-1)
+      SMAX = (YEYE-Y(I-1)+TEMP1)/(XEYE-X(I-1))
+
+      IF (KEEP.EQ.I-1) GO TO 50
+      IT = I - 2
+      XINIT = XEYE
+      IPIV = I
+      IGRAZE = I
+      I = I + 1
+
+      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
+      IF (skipbad) THEN
+         IF (I.EQ.N) GOTO 260
+	 GOTO 30
+      ENDIF
+
+      GO TO 150
+   40 CONTINUE
+      IF (XEYE.GE.X(I)) I = I + 1
+      IF (ITCH.LT.0) EPSLN = SGN*E(I)
+      DX = X(I) - XEYE
+      SMAX = (Y(I)+EPSLN-YEYE)/DX
+      SMIN = (Y(I)-EPSLN-YEYE)/DX
+   50 CONTINUE
+      XINIT = XEYE
+      IPIV = I
+      IGRAZE = I
+C DETERMINATION OF INDIVIDUAL SEGMENT
+   60 CONTINUE
+      IF (I.EQ.N) GO TO 260
+      I = I + 1
+      
+C New i, so does it point to a bad-val?
+
+      CALL PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, n, skipbad)
+      IF (skipbad) THEN
+         IF (I.EQ.N) GOTO 260
+	 GOTO 30
+      ENDIF
+
+   70 CONTINUE
+ 
+C TEST FOR NEW *MAX* SLOPE
+      DX = X(I) - XEYE
+      IF (ITCH.LT.0) EPSLN = SGN*E(I)
+      TEMP1 = (Y(I)+EPSLN-YEYE)/DX
+      TEST = TEMP1 - SMAX
+      IF (SGN.LE.0.0) TEST = -TEST
+      IF (TEST) 80, 90, 100
+   80 CONTINUE
+C TEST FOR END OF CANDIDATE SEGMENT
+      TEST = TEMP1 - SMIN
+      IF (SGN.LE.0.0) TEST = -TEST
+      IF (TEST.LT.0.0) GO TO 210
+      SMAX = TEMP1
+   90 CONTINUE
+C TEST FOR NEW *MIN* SLOPE
+      IPIV = I
+  100 CONTINUE
+      TEMP2 = (Y(I)-EPSLN-YEYE)/DX
+      TEST = TEMP2 - SMAX
+      IF (SGN.LE.0.0) TEST = -TEST
+      IF (TEST) 110, 120, 140
+  110 CONTINUE
+      TEST = SMIN - TEMP2
+      IF (SGN.LE.0.0) TEST = -TEST
+      IF (TEST) 120, 130, 60
+  120 CONTINUE
+      SMIN = TEMP2
+  130 CONTINUE
+      IGRAZE = I
+      GO TO 60
+C CHECK FOR PIVOT AT NEW EYE POINT
+  140 CONTINUE
+      IF (XEYE.EQ.X(IPIV)) GO TO 220
+      IF (ITCH.LT.0) EPSLN = SGN*E(IPIV)
+      INDC = 1
+      SVX = XEYE
+      SVY = YEYE
+      SVMN = SMIN
+      SVMX = SMAX
+      XEYE = X(IPIV)
+      YEYE = Y(IPIV) + EPSLN
+      SMIN = SMAX
+      SMAX = (YINIT-YEYE)/(XINIT-XEYE)
+      IF (KEEP.GE.IPIV) GO TO 170
+      IT = IPIV - 1
+  150 CONTINUE
+      TEMP2 = YEYE + EPSLN
+      DO 160 L=KEEP,IT
+        IF (ITCH.LT.0) TEMP2 = YEYE + SGN*E(L)
+        TEMP1 = (Y(L)-TEMP2)/(X(L)-XEYE)
+        TEST = TEMP1 - SMAX
+        IF (SGN.LE.0.0) TEST = -TEST
+        IF (TEST.LT.0.0) SMAX = TEMP1
+  160 CONTINUE
+  170 CONTINUE
+      IF (IPIV.GE.I-1) GO TO 70
+      IT = I - 2
+      TEMP2 = YEYE - EPSLN
+      IDIOT = IPIV
+      DO 200 L=IDIOT,IT
+        DX = X(L+1) - XEYE
+        IF (ITCH.LT.0) TEMP2 = YEYE - SGN*E(L+1)
+        TEMP1 = (Y(L+1)-TEMP2)/DX
+        TEST = TEMP1 - SMAX
+        IF (SGN.LE.0.0) TEST = -TEST
+        IF (TEST) 180, 190, 200
+  180   CONTINUE
+        SMAX = TEMP1
+  190   CONTINUE
+        IPIV = L + 1
+  200 CONTINUE
+      GO TO 70
+C END OF CURRENT SEGMENT
+  210 CONTINUE
+      TEMP2 = SMIN
+      IF (I.EQ.N) GO TO 240
+      KEEP = IGRAZE
+      GO TO 250
+  220 CONTINUE
+      TEMP2 = SMAX
+      IF (I.EQ.N) GO TO 230
+      SGN = -SGN
+      EPSLN = -EPSLN
+      KEEP = IPIV
+      GO TO 250
+  230 CONTINUE
+      IF (INDC.EQ.0 .OR. XEYE.NE.X(N-1)) GO TO 240
+      XEYE = SVX
+      YEYE = SVY
+      SMIN = SVMN
+      SMAX = SVMX
+  240 CONTINUE
+      U(J) = X(N-1)
+      YINIT = Y(N-1)
+      GO TO 270
+  250 CONTINUE
+      IF (IABS(IABS(ITCH)-4).NE.2) GO TO 300
+C DETERMINE KNOT ON EDGE OF TOLERANCE BAND
+      TEMP1 = 0.0
+      IF (ITCH.LT.0) TEMP1 = EPSLN - SGN*E(I-1)
+      TEMP1 = (Y(I)-Y(I-1)+TEMP1)/(X(I)-X(I-1))
+      
+      U(J) = (Y(I)+EPSLN-YEYE-TEMP1*X(I)+TEMP2*XEYE)/(TEMP2-TEMP1)
+
+      GO TO 310
+  260 CONTINUE
+      U(J) = X(N)
+      YINIT = Y(N)
+  270 CONTINUE
+C CONTINUITY CHECK FOR LAST SEGMENT
+      IF (IABS(ITCH).GE.3 .OR. INIT.EQ.1) GO TO 290
+      IT = INIT - 1
+      SVMX = SMAX + SGN
+      TEMP2 = YEYE + EPSLN
+      DO 280 L=KP,IT
+        IF (ITCH.LT.0) TEMP2 = YEYE + SGN*E(L)
+        TEMP1 = (Y(L)-TEMP2)/(X(L)-XEYE)
+        TEST = TEMP1 - SVMX
+        IF (SGN.LE.0.0) TEST = -TEST
+        IF (TEST.LT.0.0) SVMX = TEMP1
+  280 CONTINUE
+      IF (ABS(SVMX-SMAX+SVMX-SMIN).LE.ABS(SMAX-SMIN)) SMAX = SVMX
+  290 CONTINUE
+C NEARNESS CHECK FOR LAST SEGMENT
+      TEMP2 = SMAX
+      TEMP1 = YEYE + SMAX*(U(J)-XEYE)
+      TEST = YINIT - TEMP1
+      IF (SGN.LT.0.0) TEST = -TEST
+      IF (TEST.GT.0.0) GO TO 310
+      TEMP2 = SMIN
+      TEMP1 = YEYE + SMIN*(U(J)-XEYE)
+      TEST = YINIT - TEMP1
+      IF (SGN.LT.0.0) TEST = -TEST
+      IF (TEST.LT.0.0) GO TO 310
+      TEMP2 = (YINIT-YEYE)/(U(J)-XEYE)
+      V(J) = YINIT
+      GO TO 320
+  300 CONTINUE
+      IF (IABS(ITCH).GE.3) GO TO 330
+      U(J) = 0.5*(X(I)+X(I-1))
+  310 CONTINUE
+      V(J) = YEYE + TEMP2*(U(J)-XEYE)
+  320 CONTINUE
+      IF (XEYE.NE.XINIT) GO TO 330
+      IF (IABS(ITCH).EQ.2) GO TO 360
+      IF (IABS(ITCH).NE.6) GO TO 330
+      IF (J.LE.2) GO TO 380
+      GO TO 390
+  330 CONTINUE
+C RECOMPUTATION OF KNOT FOR CONTINUITY
+      IF (J.LE.2) GO TO 370
+      IF (SLOPE.EQ.TEMP2) GO TO 360
+      YINIT = V(J-2)
+      IF (IABS(ITCH).LT.3) YINIT = W(J-2)
+      TEMP1 = (XEYE*TEMP2-U(J-2)*SLOPE+YINIT-YEYE)/(TEMP2-SLOPE)
+      IF (IABS(ITCH).GE.3) GO TO 350
+      IF (TEMP1.GT.XINIT) GO TO 360
+      TEST = ABS(EPSLN)
+      IDIOT = INIT - KP
+      DO 340 L=1,IDIOT
+        IT = INIT - L
+        IF (TEMP1.GE.X(IT)) GO TO 350
+        DX = Y(IT) - YEYE - TEMP2*(X(IT)-XEYE)
+        IF (ITCH.LT.0) TEST = E(IT)
+        IF (ABS(DX).GT.TEST) GO TO 360
+  340 CONTINUE
+  350 CONTINUE
+      U(J-1) = TEMP1
+      V(J-1) = YEYE + TEMP2*(U(J-1)-XEYE)
+      IF (IABS(ITCH).LT.3) W(J-1) = V(J-1)
+      GO TO 390
+  360 CONTINUE
+      W(J-1) = YEYE + TEMP2*(U(J-1)-XEYE)
+      GO TO 390
+  370 CONTINUE
+      IF (IABS(ITCH).LT.3) GO TO 360
+  380 CONTINUE
+      V(1) = YEYE + TEMP2*(U(1)-XEYE)
+  390 CONTINUE
+      SLOPE = TEMP2
+      KP = KEEP
+      IF (I.LT.N) GO TO 20
+      IF (X(N).EQ.U(J)) GO TO 400
+      IF (IABS(ITCH).LT.3) W(J) = V(J)
+      J = J + 1
+      U(J) = X(N)
+      V(J) = Y(N)
+  400 CONTINUE
+      IF (J.GE.2 .AND. IABS(ITCH).LT.3) V(1) = W(1)
+      K = J
+
+* Truncate to integer values: indices at which to sample
+
+      DO 500 I = 1, K
+         u(i) = INT(u(i))
+  500 CONTINUE
+
+  600 CONTINUE
+      RETURN
+      END
+
+      SUBROUTINE PIECEWISE3_CHECKGAP (Y, bad_y, x, u, i, j, 
+     .   n, skipbad)
+      REAL Y(*), bad_y, x(*), u(*)
+      INTEGER i, j, n
+      LOGICAL skipbad
+
+      skipbad = .FALSE.
+	 
+      IF ( Y(i).EQ.bad_y ) THEN
+	 IF (i.GT.2) THEN
+	    u(j) = x(i-1)
+	       
+	    IF ( j .gt. 1 .and. INT(u(j)) .LT. INT(u(j-1)) ) then
+	       j = j - 1
+	       DO WHILE (INT(u(j)) .LE. INT(u(j-1)) )
+		     j = j - 1
+	       ENDDO	  
+	       u(j) = x(i-1)
+	    ENDIF
+            IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
+
+            j = j + 1
+	 ENDIF
+         DO WHILE ( Y(i).EQ.bad_y .AND. i.LT.n)
+            i = i + 1
+         ENDDO
+         
+         IF (i.GT.1) u(j) = x(i-1)
+         IF (i.GE.n) THEN
+	    i = n
+	    u(j) = x(n)
+	 ENDIF
+         IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
+
+         j = j + 1
+         u(j) = x(i)
+         IF ( j .gt. 1 .and. INT(u(j)) .EQ. INT(u(j-1)) ) j = j - 1
+
+         j = j + 1
+         skipbad = .TRUE.
+      ENDIF
+
+      RETURN
+      END
+
+
+      subroutine merge(a,na,b,nb,c,nout,nmax)
+c http://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Merge_sort#Fortran
+! Normal usage: NA+NB = NC
+! B overlays C(NA+1:NC)
+
+! modified to return nout instead of assuming treating NC, length of C as known.
+
+      integer  NA,NB,NC,NOUT,NMAX
+      REAL  A(*), B(*), C(*)
+ 
+      integer I,J,K
+ 
+      I = 1
+      J = 1
+      K = 1
+      do while(I .LE. NA .and. J .LE. NB)
+         if (A(I) .LE. B(J)) then
+            C(K) = A(I)
+            I = I+1
+	    IF (I.GT.nmax) GOTO 100
+         else
+            C(K) = B(J)
+            J = J+1
+         endif
+         K = K + 1
+	 IF (K.GT.nmax) GOTO 100
+      enddo
+      do while (I .LE. NA)
+         C(K) = A(I)
+         I = I + 1
+         K = K + 1
+	 IF (K.GT.nmax) GOTO 100
+      enddo
+      do while (J .LE. NB)
+         C(K) = B(J)
+         J = J+1
+         K = K + 1
+	 IF (K.GT.nmax) GOTO 100
+      enddo
+
+* remove duplicates
+
+ 100  CONTINUE
+      j = 1
+      do i = 2, k
+         IF (c(i) .GT. c(i-1)) then
+	    j = j + 1
+	    IF (j.GT.nmax) THEN
+	       j = nmax
+	       GOTO 200
+	    ENDIF
+	    c(j) = c(i)
+	 endif
+      enddo
+ 200  nout = j
+
+      return
+ 
+      end ! subroutine merge
diff --git a/external_functions/decimate/sample_fast_i.F b/external_functions/decimate/sample_fast_i.F
index cde1d05..a664fa8 100644
--- a/external_functions/decimate/sample_fast_i.F
+++ b/external_functions/decimate/sample_fast_i.F
@@ -154,7 +154,7 @@
       DO 100 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
       
          result(i) = bad_flag_result
-         IF (arg_2(i2) .NE. bad_flag_result) THEN
+         IF (arg_2(i2) .NE. bad_flag(ARG2)) THEN
             isample = INT(arg_2(i2))
             result(i) = arg_1(isample)
 	 ENDIF
diff --git a/external_functions/decimate/sample_fast_i.F b/external_functions/decimate/sample_fast_i_str.F
similarity index 88%
copy from external_functions/decimate/sample_fast_i.F
copy to external_functions/decimate/sample_fast_i_str.F
index cde1d05..7ba51ae 100644
--- a/external_functions/decimate/sample_fast_i.F
+++ b/external_functions/decimate/sample_fast_i_str.F
@@ -1,4 +1,4 @@
-*  sample_fast_i.F
+*  sample_fast_i_str.F
 * 
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
@@ -71,7 +71,7 @@
 *
 
 
-      SUBROUTINE sample_fast_i_init(id)
+      SUBROUTINE sample_fast_i_str_init(id)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -83,18 +83,20 @@
 *                                                                      |
 *                                                                      V
 
-      CALL ef_set_desc(id, 'Fast 1D sample variable using set of indices' )
+      CALL ef_set_desc(id, 'Fast 1D sample string variable using set of indices' )
 
       CALL ef_set_num_args(id, 2)
       CALL ef_set_has_vari_args(id, NO)
       CALL ef_set_axis_inheritance_6d(id, IMPLIED_BY_ARGS, NORMAL, 
      .                             NORMAL, NORMAL, NORMAL, NORMAL)
       CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_result_type(id, STRING_RETURN)
 
       arg = 1
-      CALL ef_set_arg_name(id, arg, 'V')
-      CALL ef_set_arg_desc(id, arg, 'Variable to sample')
+      CALL ef_set_arg_name(id, arg, 'S')
+      CALL ef_set_arg_desc(id, arg, 'String Variable to sample')
       CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_arg_type(id, arg, STRING_ARG)
 
       arg = 2
       CALL ef_set_arg_name(id, arg, 'Indices')
@@ -111,7 +113,7 @@
 
 *  In this subroutine we compute the result
 * 
-      SUBROUTINE sample_fast_i_compute(id, arg_1, arg_2, result)
+      SUBROUTINE sample_fast_i_str_compute(id, arg_1, arg_2, result)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -121,9 +123,17 @@
 
 * Function is intended only for variables in the x direction
 
-      REAL arg_1(mem1lox:mem1hix)
+* Single precision Ferret: string arg and result needed to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
+      REAL arg_1(strdf,mem1lox:mem1hix)
       REAL arg_2(mem2lox:mem2hix)
-      REAL result(memreslox:memreshix)
+      REAL result(strdf,memreslox:memreshix)
 
 * After initialization, the 'res_' arrays contain indexing information 
 * for the result axes.  The 'arg_' arrays will contain the indexing 
@@ -153,10 +163,10 @@
       i2 = arg_lo_ss(X_AXIS,ARG2)
       DO 100 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
       
-         result(i) = bad_flag_result
-         IF (arg_2(i2) .NE. bad_flag_result) THEN
+         IF (arg_2(i2) .NE. bad_flag(ARG2)) THEN  ! HELLO HELLO
             isample = INT(arg_2(i2))
-            result(i) = arg_1(isample)
+	    CALL EF_PUT_STRING_PTR(arg_1(1,isample), result(1,i) )
+
 	 ENDIF
 	 i2 = i2 + arg_incr(X_AXIS,ARG2)
   100 CONTINUE
diff --git a/external_functions/decimate/separate.F b/external_functions/decimate/separate.F
index 48b3b29..6b0d1b5 100644
--- a/external_functions/decimate/separate.F
+++ b/external_functions/decimate/separate.F
@@ -228,16 +228,20 @@
 	 msum = msum + rend
 	 IF (msum .GT. nx) msum = nx+1
 	 DO i = i1, msum
-	    result(ir) = arg_1(i,k,k,k,k,k)
-	    IF (ir.GT.1 .AND. ifix .AND. 
-     .              result(ir ).NE.bad_flag_result .AND. 
-     .              result(ir-1).NE.bad_flag_result) THEN
-	       IF ( result(ir)-result(ir-1) .GT. tol) 
-     .               result(ir) = result(ir) - 360.
-	       IF ( result(ir)-result(ir-1) .LT. -1*tol) 
-     .               result(ir) = result(ir) + 360.
-               
-            ENDIF
+	    IF (arg_1(i,k,k,k,k,k) .NE. bad_flag(ARG1)) THEN
+	       result(ir) = arg_1(i,k,k,k,k,k)
+	       IF (ir.GT.1 .AND. ifix) THEN
+	          IF (result(ir ).NE.bad_flag_result .AND. 
+     .                 result(ir-1).NE.bad_flag_result) THEN
+	             IF ( result(ir)-result(ir-1) .GT. tol) 
+     .                  result(ir) = result(ir) - 360.
+	             IF ( result(ir)-result(ir-1) .LT. -1*tol) 
+     .                  result(ir) = result(ir) + 360.   
+                  ENDIF
+               ENDIF
+	    ELSE
+	       result(ir) = bad_flag_result
+	    ENDIF
 	    ir = ir + 1
 	    IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
 	 ENDDO
diff --git a/external_functions/decimate/separate.F b/external_functions/decimate/separate_str.F
similarity index 91%
copy from external_functions/decimate/separate.F
copy to external_functions/decimate/separate_str.F
index 48b3b29..6489577 100644
--- a/external_functions/decimate/separate.F
+++ b/external_functions/decimate/separate_str.F
@@ -1,4 +1,4 @@
-*  separate.F
+*  separate_str.F
 * 
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
@@ -72,7 +72,7 @@
 *
 
 
-      SUBROUTINE separate_init(id)
+      SUBROUTINE separate_str_init(id)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -85,7 +85,7 @@
 *                                                                      V
 
       CALL ef_set_desc(id,
-     . 'Insert a bad-value between features' )
+     . 'Insert a bad-value between features, string variable' )
 
       CALL ef_set_num_args(id, 3)
       CALL ef_set_has_vari_args(id, NO)
@@ -97,6 +97,7 @@
       CALL ef_set_arg_name(id, arg, 'A')
       CALL ef_set_arg_desc(id, arg, 'variable to sample on I axis')
       CALL ef_set_axis_influence_6d(id, arg, YES, NO, NO, NO, NO, NO)
+      CALL ef_set_arg_type (id, arg, STRING_ARG)
 
       arg = 2
       CALL ef_set_arg_name(id, arg, 'Rowsize')
@@ -107,9 +108,11 @@
       arg = 3
       CALL ef_set_arg_name(id, arg, 'FixLongitudes')
       CALL ef_set_arg_desc(id, arg,
-     .          '1 if A is longitudes needing modulo fixes, 0 otherwise')
+     .          'ignored (included for parity with numeric fcn)')
       CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
 
+      CALL ef_set_result_type (id, STRING_RETURN)
+
 *                                                                      ^
 *                                                                      |
 *                                            USER CONFIGURABLE PORTION |
@@ -121,7 +124,7 @@
 
 
 
-      SUBROUTINE separate_result_limits(id)
+      SUBROUTINE separate_str_result_limits(id)
 
       INCLUDE 'ferret_cmn/EF_Util.cmn'
 
@@ -147,7 +150,8 @@
 * will add a point for each row
 
       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
-      nr = arg_hi_ss(E_AXIS, ARG2) - arg_lo_ss( E_AXIS, ARG2) + 1
+      nr = MAX( (arg_hi_ss(E_AXIS, ARG2) - arg_lo_ss( E_AXIS, ARG2) + 1), 
+     .          (arg_hi_ss(E_AXIS, ARG2) - arg_lo_ss( E_AXIS, ARG2) + 1) )
 
       lo_lim = 1
       hi_lim = nx + nr - 1
@@ -167,7 +171,7 @@
 
 *  In this subroutine we compute the result
 * 
-      SUBROUTINE separate_compute(id, arg_1, arg_2, arg_3, result)
+      SUBROUTINE separate_str_compute(id, arg_1, arg_2, arg_3, result)
 
       IMPLICIT NONE
       INCLUDE 'ferret_cmn/EF_Util.cmn'
@@ -202,10 +206,11 @@
 *                                                                      |
 *                                                                      V
 
-      INTEGER i, i1, ir, k, m
+      INTEGER i, i1, ir, k, m, slen
       INTEGER nx, ne, msum, rend
       REAL fixlon, tol, nothing
       LOGICAL ifix
+      CHARACTER*512 buff
 
       CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
@@ -228,21 +233,18 @@
 	 msum = msum + rend
 	 IF (msum .GT. nx) msum = nx+1
 	 DO i = i1, msum
-	    result(ir) = arg_1(i,k,k,k,k,k)
-	    IF (ir.GT.1 .AND. ifix .AND. 
-     .              result(ir ).NE.bad_flag_result .AND. 
-     .              result(ir-1).NE.bad_flag_result) THEN
-	       IF ( result(ir)-result(ir-1) .GT. tol) 
-     .               result(ir) = result(ir) - 360.
-	       IF ( result(ir)-result(ir-1) .LT. -1*tol) 
-     .               result(ir) = result(ir) + 360.
-               
-            ENDIF
+
+	    CALL ef_get_string_arg_element_6d(id, ARG1, arg_1,
+     .                       i,k,k,k,k,k, slen,buff)
+	    CALL ef_put_string (buff, slen, result(ir) )
+  
 	    ir = ir + 1
 	    IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
 	 ENDDO
 	 i1 = msum+1
-	 result(ir) = bad_flag_result
+	 buff = ' '
+	 slen = 1
+	 CALL ef_put_string (buff, slen, result(ir) )
 	 ir = ir + 1
 	 IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
       ENDDO
diff --git a/external_functions/ef_utility/ferret_cmn/EF_mem_subsc.cmn b/external_functions/ef_utility/ferret_cmn/EF_mem_subsc.cmn
index 9d209de..e3db8d6 100644
--- a/external_functions/ef_utility/ferret_cmn/EF_mem_subsc.cmn
+++ b/external_functions/ef_utility/ferret_cmn/EF_mem_subsc.cmn
@@ -15,7 +15,6 @@
 *
 * 2/12 *kms* add E and F dimensions
 *            moved to EF_mem_subsc.defcmn so EF_mem_subsc is the external declaration
-* 6/12 *kms* added EXTERNAL since this block is part of Ferret
 * 8/12 *kms* added FERRET_ prefix to common block name to identify source 
 *            (primarily for PyFerret where this becomes global under Python)
 *
@@ -26,7 +25,6 @@
         INTEGER     ef_max_mem_args
         PARAMETER ( ef_max_mem_args = 12 )
 
-        EXTERNAL FERRET_EF_MEM_SUBSC
         COMMON / FERRET_EF_MEM_SUBSC /
      .      mem1lox, mem2lox, mem3lox, mem4lox,  mem5lox,  mem6lox,
      .      mem7lox, mem8lox, mem9lox, mem10lox, mem11lox, mem12lox,
diff --git a/external_functions/ef_utility/ferret_cmn/EF_mem_subsc_f90.inc b/external_functions/ef_utility/ferret_cmn/EF_mem_subsc_f90.inc
index 861ac2a..01690ff 100644
--- a/external_functions/ef_utility/ferret_cmn/EF_mem_subsc_f90.inc
+++ b/external_functions/ef_utility/ferret_cmn/EF_mem_subsc_f90.inc
@@ -15,7 +15,6 @@
 !
 ! 2/12 *kms* add E and F dimensions
 !            moved to EF_mem_subsc.defcmn so EF_mem_subsc is the external declaration
-! 6/12 *kms* added EXTERNAL since this block is part of Ferret
 ! 8/12 *kms* added FERRET_ prefix to common block name to identify source 
 !            (primarily for PyFerret where this becomes global under Python)
 !
@@ -27,7 +26,6 @@
 
         INTEGER, PARAMETER :: ef_max_mem_args = 12
 
-        EXTERNAL FERRET_EF_MEM_SUBSC
         COMMON / FERRET_EF_MEM_SUBSC / &
             mem1lox, mem2lox, mem3lox, mem4lox,  mem5lox,  mem6lox, &
             mem7lox, mem8lox, mem9lox, mem10lox, mem11lox, mem12lox, &
diff --git a/external_functions/eof/Makefile b/external_functions/eof/Makefile
index ae7c050..3eef714 100644
--- a/external_functions/eof/Makefile
+++ b/external_functions/eof/Makefile
@@ -45,7 +45,7 @@ SUB_OBJS = eofsubs.o
 # Targets
 #
 
-all:	eofsvd_space.so eof_space_fix.so eof_tfunc_fix.so eof_stat_fix.so
+all:	eofsubs.o eof_space_tgap.so eof_tfunc_tgap.so eof_stat_tgap.so
 
 debug:
 	$(MAKE) "FFLAGS = $(FFLAGS) $(FFLAGS_DEBUG)" "CFLAGS = $(CFLAGS) $(CFLAGS_DEBUG)" all
@@ -56,6 +56,13 @@ install:
 clean:
 	-rm -f *.o *.so
 
+# To make a tarfile with the older functions that work on gappy timeseries:
+# make; make tarfile
+tarfile:
+	rm -f fer_eof_gappy_timeseries_fcns.tar*
+	tar cf fer_eof_gappy_timeseries_fcns.tar *.so
+	gzip -9 fer_eof_gappy_timeseries_fcns.tar
+
 #
 # End of Makefile
 #
diff --git a/external_functions/eof/eof_space_tgap.F b/external_functions/eof/eof_space_tgap.F
new file mode 100644
index 0000000..617d7fb
--- /dev/null
+++ b/external_functions/eof/eof_space_tgap.F
@@ -0,0 +1,629 @@
+*
+*  eof_space_tgap.F
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+* Ansley Manke
+* Sep 1998
+* Aug 2000 change fcn description; argument can be fcn of Z as well as x,y,t
+* May 2001 Use simpler solver EOFIN when frac_timeser = 1.
+*
+* Jul 2001 Move to statically linked code in fer/efi. 
+* Jul 2001 Move count_eof and pack_eof to file eofsubs.f, rename solve_eof
+*          to solve_eof_space_tgap.
+*          Make the function work w/ data having multiple depths: compute
+*          EOF solution for each depth.
+* Aug 2001 move to fer/efi directory, to be statically linked to Ferret.  
+*	   Change INCLUDE statements to remove directory spec.  
+* Feb 2003 Add a test that NEOF <= max_neof, which is dictated by work
+*          arrays in the solvers in TRIDIN in eofsubs.F
+* Jun 2003 Workspace arrays need to be initialized for each vertical level.
+* Sep 2005 Remove the max_eof test; make all workspace be allocated as 
+*          external function work arrays.
+*
+* Compute EOF/s and time amplitude funcions from a 2-d field, or for each level 
+* of a 3-D field.  Based on programs (coadseof.f, etc.) by Dai McClurg and 
+* Ansley Manke and calls Billy Kessler's method for finding EOFs  of NON-gappy 
+* time series EOFIN, or optionally his implementation of Chelton's '82 method 
+* for finding EOFs of gappy time series.
+*
+* Return Spatial EOF's
+*
+*
+* In this subroutine we provide information about
+* the function.  The user configurable information 
+* consists of the following:
+*
+* descr              Text description of the function
+*
+* num_args           Required number of arguments
+*
+* axis_inheritance   Type of axis for the result
+*                       ( CUSTOM, IMPLIED_BY_ARGS, NORMAL, ABSTRACT )
+*                       CUSTOM          - user defined axis
+*                       IMPLIED_BY_ARGS - same axis as the incoming argument
+*                       NORMAL          - the result is normal to this axis
+*                       ABSTRACT        - an axis which only has index values
+*
+* piecemeal_ok       For memory optimization:
+*                       axes where calculation may be performed piecemeal
+*                       ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE eof_space_tgap_init(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+
+      INTEGER id, arg
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+      CALL ef_set_desc(id, 
+     . 'Compute EOF spacial fields from XYT field with gappy time series')
+
+      CALL ef_set_num_args(id, 2)
+
+      CALL ef_set_axis_inheritance_6d(id,
+     .                                IMPLIED_BY_ARGS, IMPLIED_BY_ARGS,
+     .                                IMPLIED_BY_ARGS, ABSTRACT,
+     .                                IMPLIED_BY_ARGS, IMPLIED_BY_ARGS)
+      CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_num_work_arrays(id, 9)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'A')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     .                     'Variable in x,y,t; may be fcn of z,e,f')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              YES, YES, YES, NO, YES, YES)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'frac_timeser')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     . 'Use only those time series with this fraction valid data')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              NO, NO, NO, NO, NO, NO)
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+************************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* loss               lo subscript for an axis
+*
+* hiss               hi subscript for an axis
+*
+
+      SUBROUTINE eof_space_tgap_result_limits(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+      INTEGER id
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      INTEGER my_lo_l, my_hi_l
+
+      INTEGER nx, ny
+
+*     Use utility functions to get context information about the 
+*     1st argument, to set the abstract axis lo and hi indices.
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
+      ny = arg_hi_ss(Y_AXIS, ARG1) - arg_lo_ss(Y_AXIS, ARG1) + 1
+
+      my_lo_l = 1
+      my_hi_l = nx * ny
+
+      CALL ef_set_axis_limits(id, T_AXIS, my_lo_l, my_hi_l)
+
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we request an amount of storage to be supplied
+* by Ferret and passed as an additional argument.
+*
+      SUBROUTINE eof_space_tgap_work_size(id)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+*
+* Set the work arrays, X/Y/Z/T/E/F dimensions
+*
+* ef_set_work_array_dims_6d(id, array #,
+*                           xlo, ylo, zlo, tlo, elo, flo,
+*                           xhi, yhi, zhi, thi, ehi, fhi)
+*
+      COMMON /EOFXYSTOR/ mx
+      INTEGER mx1, my1, mt1, mx, mxmt, mxmx
+
+      INTEGER iwork
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      mx1 = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      my1 = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      mt1 = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+      mx = mx1 * my1 + 10
+      mxmt = mx * mt1 + 10
+      mxmx = mx * mx + 10
+
+*  val
+      iwork = 1
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  taf
+      iwork = 2
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  pct
+      iwork = 3
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  vec
+      iwork = 4
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  c
+      iwork = 5
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  ddat_1d
+      iwork = 6
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  isave_jsave
+      iwork = 7
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 2, 1, 1, 1, 1)
+
+*  ok
+      iwork = 8
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,   1, 1, 1, 1, 1,
+     .                              mx1, my1, 1, 1, 1, 1)
+
+*  eofwork
+      iwork = 9
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,  1, 1, 1, 1, 1,
+     .                               mx, 10, 1, 1, 1, 1)
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+*
+* In this SUBROUTINE we compute the result
+*
+
+      SUBROUTINE  eof_space_tgap_compute(id, arg_1, arg_2, result, 
+     .       val, taf, pct, vec, c, ddat_1d, isave_jsave, ok, eofwork)
+
+*  arg_1  variable, function of (x,y,t)
+*  result NX*NY eigenvectors
+
+*  Work arrays:
+*  val, taf, pct, vec, c, ddat_1d, isave_jsave, ok
+
+*  val(neof)	eigenvalues (Lambda)
+*  result == vec(neof,neof) eigenvectors (Lambda*U). Same units as data.
+*  taf(neof,nt)	time amplitude functions (V). Dimensionless.
+*  pct(neof)	% variance represented by each EOF.
+*  c(neof,neof)	work space for cov matrix (garbage output)
+*  isave_jsave  save the locations of the data in the x-y plane
+*  eofwork	used by QRSYM and other solver routines; replaces
+*		original ALPHA, BETA, BB, and P arrays.
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+      INTEGER id
+
+      COMMON /EOFXYSTOR/ mx
+      INTEGER mx
+
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, mem2loz:mem2hiz, 
+     .           mem2lot:mem2hit, mem2loe:mem2hie, mem2lof:mem2hif)
+
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+
+*  Dimension the work arrays.
+
+      REAL val(wrk1lox:wrk1hix, wrk1loy:wrk1hiy,
+     .         wrk1loz:wrk1hiz, wrk1lot:wrk1hit,
+     .         wrk1loe:wrk1hie, wrk1lof:wrk1hif)
+      REAL taf(wrk2lox:wrk2hix, wrk2loy:wrk2hiy,
+     .         wrk2loz:wrk2hiz, wrk2lot:wrk2hit,
+     .         wrk2loe:wrk2hie, wrk2lof:wrk2hif)
+      REAL pct(wrk3lox:wrk3hix, wrk3loy:wrk3hiy,
+     .         wrk3loz:wrk3hiz, wrk3lot:wrk3hit,
+     .         wrk3loe:wrk3hie, wrk3lof:wrk3hif)
+      REAL vec(wrk4lox:wrk4hix, wrk4loy:wrk4hiy,
+     .         wrk4loz:wrk4hiz, wrk4lot:wrk4hit,
+     .         wrk4loe:wrk4hie, wrk4lof:wrk4hif)
+      REAL c(wrk5lox:wrk5hix, wrk5loy:wrk5hiy,
+     .       wrk5loz:wrk5hiz, wrk5lot:wrk5hit,
+     .       wrk5loe:wrk5hie, wrk5lof:wrk5hif)
+      REAL ddat_1d(wrk6lox:wrk6hix, wrk6loy:wrk6hiy,
+     .             wrk6loz:wrk6hiz, wrk6lot:wrk6hit,
+     .             wrk6loe:wrk6hie, wrk6lof:wrk6hif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL ok(wrk8lox:wrk8hix, wrk8loy:wrk8hiy,
+     .        wrk8loz:wrk8hiz, wrk8lot:wrk8hit,
+     .        wrk8loe:wrk8hie, wrk8lof:wrk8hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable''s axes. 
+
+      INTEGER res_lo_ss(6),
+     .        res_hi_ss(6),
+     .        res_incr (6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER neof, ier
+      CHARACTER*255 err_msg, err_out
+
+      INTEGER nx, ny, nt, k, m, n, k1, m1, n1,
+     .        iw, jw, kw, lw, mw, nw
+      REAL frac_timeser
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+*  get array sizes
+
+      nx = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      ny = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      nt = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+*  Get time percent parameter.
+
+      frac_timeser = arg_2(arg_lo_ss(X_AXIS,ARG2), 
+     .                     arg_lo_ss(Y_AXIS,ARG2),
+     .                     arg_lo_ss(Z_AXIS,ARG2), 
+     .                     arg_lo_ss(T_AXIS,ARG2),
+     .                     arg_lo_ss(E_AXIS,ARG2),
+     .                     arg_lo_ss(F_AXIS,ARG2))
+
+*  Compute EOF for each depth, ensemble, forecast
+
+      n1 = arg_lo_ss(F_AXIS,ARG1)
+      DO 300 n = res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+
+      m1 = arg_lo_ss(E_AXIS,ARG1)
+      DO 200 m = res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+
+      k1 = arg_lo_ss(Z_AXIS,ARG1)
+      DO 100 k = res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+
+*  Initialize work arrays.
+
+         DO 701 nw = wrk1lof,wrk1hif
+         DO 701 mw = wrk1loe,wrk1hie
+         DO 701 lw = wrk1lot,wrk1hit
+         DO 701 kw = wrk1loz,wrk1hiz 
+         DO 701 jw = wrk1loy,wrk1hiy
+         DO 701 iw = wrk1lox,wrk1hix
+            val(iw,jw,kw,lw,mw,nw) = 0.
+  701    CONTINUE
+
+         DO 702 nw = wrk2lof,wrk2hif
+         DO 702 mw = wrk2loe,wrk2hie
+         DO 702 lw = wrk2lot,wrk2hit
+         DO 702 kw = wrk2loz,wrk2hiz 
+         DO 702 jw = wrk2loy,wrk2hiy
+         DO 702 iw = wrk2lox,wrk2hix
+            taf(iw,jw,kw,lw,mw,nw) = 0.
+  702    CONTINUE
+
+         DO 703 nw = wrk3lof,wrk3hif
+         DO 703 mw = wrk3loe,wrk3hie
+         DO 703 lw = wrk3lot,wrk3hit
+         DO 703 kw = wrk3loz,wrk3hiz 
+         DO 703 jw = wrk3loy,wrk3hiy
+         DO 703 iw = wrk3lox,wrk3hix
+            pct(iw,jw,kw,lw,mw,nw) = 0.
+  703    CONTINUE
+
+         DO 704 nw = wrk4lof,wrk4hif
+         DO 704 mw = wrk4loe,wrk4hie
+         DO 704 lw = wrk4lot,wrk4hit
+         DO 704 kw = wrk4loz,wrk4hiz 
+         DO 704 jw = wrk4loy,wrk4hiy
+         DO 704 iw = wrk4lox,wrk4hix
+            vec(iw,jw,kw,lw,mw,nw) = 0.
+  704    CONTINUE
+
+         DO 705 nw = wrk5lof,wrk5hif
+         DO 705 mw = wrk5loe,wrk5hie
+         DO 705 lw = wrk5lot,wrk5hit
+         DO 705 kw = wrk5loz,wrk5hiz 
+         DO 705 jw = wrk5loy,wrk5hiy
+         DO 705 iw = wrk5lox,wrk5hix
+            c(iw,jw,kw,lw,mw,nw) = 0.
+  705    CONTINUE
+
+         DO 706 nw = wrk6lof,wrk6hif
+         DO 706 mw = wrk6loe,wrk6hie
+         DO 706 lw = wrk6lot,wrk6hit
+         DO 706 kw = wrk6loz,wrk6hiz 
+         DO 706 jw = wrk6loy,wrk6hiy
+         DO 706 iw = wrk6lox,wrk6hix
+            ddat_1d(iw,jw,kw,lw,mw,nw) = 0.
+  706    CONTINUE
+
+         DO 707 nw = wrk7lof,wrk7hif
+         DO 707 mw = wrk7loe,wrk7hie
+         DO 707 lw = wrk7lot,wrk7hit
+         DO 707 kw = wrk7loz,wrk7hiz 
+         DO 707 jw = wrk7loy,wrk7hiy
+         DO 707 iw = wrk7lox,wrk7hix
+            isave_jsave(iw,jw,kw,lw,mw,nw) = 0.
+  707    CONTINUE
+
+         DO 708 nw = wrk8lof,wrk8hif
+         DO 708 mw = wrk8loe,wrk8hie
+         DO 708 lw = wrk8lot,wrk8hit
+         DO 708 kw = wrk8loz,wrk8hiz 
+         DO 708 jw = wrk8loy,wrk8hiy
+         DO 708 iw = wrk8lox,wrk8hix
+            ok(iw,jw,kw,lw,mw,nw) = 0.
+  708    CONTINUE
+
+         DO 709 nw = wrk9lof,wrk9hif
+         DO 709 mw = wrk9loe,wrk9hie
+         DO 709 lw = wrk9lot,wrk9hit
+         DO 709 kw = wrk9loz,wrk9hiz 
+         DO 709 jw = wrk9loy,wrk9hiy
+         DO 709 iw = wrk9lox,wrk9hix
+            eofwork(iw,jw,kw,lw,mw,nw) = 0.
+  709    CONTINUE
+
+
+*  Find the number of eofs to solve for.
+*  neof = number of (x,y) points with frac_timeser good data.  
+*  Set OK to mark where they are.   (note this also allows for 
+*  working around continental boundaries or other areas where 
+*  entire time series are missing)
+
+         CALL count_neof (arg_1, neof, ok, nx, ny, nt, k1, m1, n1,
+     .                    arg_lo_ss, arg_hi_ss, arg_incr, mx,
+     .                    bad_flag(ARG1), frac_timeser, err_msg, ier)
+         IF (ier .NE. 0) then
+            GOTO 5010
+         ENDIF
+
+*  Put the data into the array ddat_1d(neof,nt) 
+
+         CALL pack_ef (arg_1, ddat_1d, isave_jsave, neof,  
+     .                 ok, frac_timeser, nx, ny, nt, k1, m1, n1,
+     .                 arg_lo_ss, arg_hi_ss, arg_incr)
+
+*  Solve for the EOF's: eigenvectors, time functions, percent variance explained.
+
+         CALL solve_eof_space_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag(ARG1), bad_flag_result,
+     .            frac_timeser, err_msg, ier)
+         IF (ier .NE. 0) GOTO 5020
+
+         k1 = k1 + arg_incr(Z_AXIS,ARG1)
+  100 CONTINUE
+         m1 = m1 + arg_incr(E_AXIS,ARG1)
+  200 CONTINUE
+         n1 = n1 + arg_incr(F_AXIS,ARG1)
+  300 CONTINUE
+
+      RETURN
+
+ 5010 CALL ef_bail_out (id, err_msg)
+      RETURN
+
+ 5020 WRITE (err_out, 5500) k, m, n, err_msg 
+ 5500 FORMAT ('k,m,n=', 3I3, A250)
+      CALL ef_bail_out (id, err_out)
+      RETURN
+
+      END
+
+***********************************************************************
+
+      SUBROUTINE solve_eof_space_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag_dat, bad_flag_result, 
+     .            frac_timeser, err_msg, ier)
+
+      IMPLICIT NONE
+      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+
+* arguments
+      INTEGER neof, nt, k, m, n
+      REAL ddat_1d(neof,nt)
+      REAL val(*)
+      REAL vec(neof, neof)
+      REAL taf(neof, nt)
+      REAL pct(*)
+      REAL c(neof, neof)
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr(6)
+      REAL bad_flag_dat, bad_flag_result, frac_timeser
+      CHARACTER*(*) err_msg
+      INTEGER ier
+
+* local variables
+      INTEGER i, j, l, mm, nn, is, js
+
+      IF (frac_timeser .LT. 1.) THEN
+         CALL EOFIN_CHEL_GAP (ddat_1d, neof, nt, val, vec, taf, pct, c, 
+     .            eofwork, bad_flag_dat, bad_flag_result, err_msg, ier)
+         IF (ier .NE. 0) RETURN
+      ELSE
+         CALL EOFIN(ddat_1d, neof, nt, val, vec, taf, pct, c, eofwork)
+      ENDIF
+
+*  Result is the eigenvectors.
+
+      DO 130 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+         DO 120 j = res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+            DO 110 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+               result(i,j,k,l,m,n) = bad_flag_result
+  110       CONTINUE
+  120    CONTINUE
+  130 CONTINUE
+
+      DO 220 nn = 1, neof
+         DO 210 mm = 1, neof
+            IF (res_lo_ss(X_AXIS) .EQ. ef_unspecified_int4) THEN
+               is = ef_unspecified_int4
+            ELSE
+               is = res_lo_ss(X_AXIS) + isave_jsave(mm,1,1,1,1,1) - 1
+            ENDIF
+
+            IF (res_lo_ss(Y_AXIS) .EQ. ef_unspecified_int4) THEN
+               js = ef_unspecified_int4
+            ELSE
+               js = res_lo_ss(Y_AXIS) + isave_jsave(mm,2,1,1,1,1) - 1
+            ENDIF
+
+            result(is,js,k,nn,m,n) = vec(mm,nn)
+
+  210    CONTINUE
+  220 CONTINUE
+
+      RETURN
+      END
diff --git a/external_functions/eof/eof_stat_tgap.F b/external_functions/eof/eof_stat_tgap.F
new file mode 100644
index 0000000..cd03d21
--- /dev/null
+++ b/external_functions/eof/eof_stat_tgap.F
@@ -0,0 +1,646 @@
+*
+*  eof_stat_tgap.F
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+* Ansley Manke
+* July 1999
+* Aug 2000 change fcn description; argument can be fcn of Z as well as x,y,t
+* May 2001 change to simpler solver EOFIN  (time series all need to be filled
+*
+* Jul 2001 Move to statically linked code in fer/efi. 
+* Jul 2001 move count_eof and pack_eof to file eofsubs.f, rename solve_eof
+*          to solve_eof_stat_tgap.
+*          Make the function work w/ data having multiple depths: compute
+*          EOF solution for each depth.
+* Aug 2001 move to fer/efi directory, to be statically linked to Ferret.  
+*	   Change INCLUDE statements to remove directory spec.
+* Feb 2003 Add a test that NEOF <= max_neof, which is dictated by work
+*          arrays in the solvers in TRIDIN in eofsubs.F
+* Jun 2003 Workspace arrays need to be initialized for each vertical level.
+* Sep 2005 Remove the max_eof test; make all workspace be allocated as 
+*          external function work arrays.
+*
+* Compute EOF/s and time amplitude funcions from a 2-d field, or for each level 
+* of a 3-D field.  Based on programs (coadseof.f, etc.) by Dai McClurg and 
+* Ansley Manke and calls Billy Kessler's method for finding EOFs  of NON-gappy 
+* time series EOFIN, or optionally his implementation of Chelton's '82 method 
+* for finding EOFs of gappy time series.
+*
+* Return statistics: number of eof's computed, percent variance explained
+* by each EOF, and the eigenvalue for each EOF.
+* x-axis is abstract length nx*ny; listing the statistics for each EOF.
+* y-axis is length 3: 
+*    1st is the # of eof's computed
+*    2nd is the Pct variation for each eof
+*    3rd is the eigenvalue for each eof.
+*
+*
+* In this SUBROUTINE we provide information about
+* the function.  The user configurable information 
+* consists of the following:
+*
+* descr              Text description of the function
+*
+* num_args           Required number of arguments
+*
+* axis_inheritance   Type of axis for the result
+*                       ( CUSTOM, IMPLIED_BY_ARGS, NORMAL, ABSTRACT )
+*                       CUSTOM          - user defined axis
+*                       IMPLIED_BY_ARGS - same axis as the incoming argument
+*                       NORMAL          - the result is normal to this axis
+*                       ABSTRACT        - an axis which only has index values
+*
+* piecemeal_ok       For memory optimization:
+*                       axes where calculation may be performed piecemeal
+*                       ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE eof_stat_tgap_init(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+
+      INTEGER id, arg
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      CHARACTER*100 fcn_desc
+
+   10 FORMAT ('EOF statistics from XYT field (gappy time series). j=1:#EOFs, ',
+     .        'j=2:%variation, j=3:eigenvalues' )
+      WRITE (fcn_desc, 10) 
+      CALL ef_set_desc(id, fcn_desc)
+
+      CALL ef_set_num_args(id, 2)
+
+      CALL ef_set_axis_inheritance_6d(id,
+     .                                ABSTRACT,        ABSTRACT,
+     .                                IMPLIED_BY_ARGS, NORMAL,
+     .                                IMPLIED_BY_ARGS, IMPLIED_BY_ARGS)
+      CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+
+
+      CALL ef_set_num_work_arrays(id, 9)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'A')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     .        'Variable in x,y,t; may be fcn of z,e,f')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              NO, NO, YES, NO, YES, YES)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'frac_timeser')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     . 'Use only those time series with this fraction valid data.')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              NO, NO, NO, NO, NO, NO)
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+************************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* loss               lo subscript for an axis
+*
+* hiss               hi subscript for an axis
+*
+
+      SUBROUTINE eof_stat_tgap_result_limits(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      INTEGER my_lo_l, my_hi_l
+
+      INTEGER nx, ny
+
+*     Use utility functions to get context information about the 
+*     1st argument, to set the abstract axis lo and hi indices.
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
+      ny = arg_hi_ss(Y_AXIS, ARG1) - arg_lo_ss(Y_AXIS, ARG1) + 1
+
+      my_lo_l = 1
+      my_hi_l = nx * ny
+
+      CALL ef_set_axis_limits(id, X_AXIS, my_lo_l, my_hi_l)
+
+      CALL ef_set_axis_limits(id, Y_AXIS, 1, 3)
+
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we request an amount of storage to be supplied
+* by Ferret and passed as an additional argument.
+*
+      SUBROUTINE eof_stat_tgap_work_size(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+*
+* Set the work arrays,  X/Y/Z/T/E/F dimensions
+*
+* ef_set_work_array_dims_6d(id, array #,
+*                           xlo, ylo, zlo, tlo, elo, flo,
+*                           xhi, yhi, zhi, thi, ehi, fhi)
+*
+      COMMON /eof_stat_tgapSTOR/ mx
+      INTEGER mx1, my1, mt1, mx, mxmt, mxmx
+
+      INTEGER iwork
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      mx1 = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      my1 = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      mt1 = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+      mx = mx1 * my1 + 10
+      mxmt = mx * mt1 + 10
+      mxmx = mx* mx + 10
+
+*  val
+      iwork = 1
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  taf
+      iwork = 2
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  pct
+      iwork = 3
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  vec
+      iwork = 4
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  c
+      iwork = 5
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  ddat_1d
+      iwork = 6
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  isave_jsave
+      iwork = 7
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 2, 1, 1, 1, 1)
+
+*  ok
+      iwork = 8
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,   1, 1, 1, 1, 1,
+     .                              mx1, my1, 1, 1, 1, 1)
+
+*  eofwork
+      iwork = 9
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,  1, 1, 1, 1, 1,
+     .                               mx, 10, 1, 1, 1, 1)
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+
+
+
+*
+* In this SUBROUTINE we compute the result
+*
+
+      SUBROUTINE  eof_stat_tgap_compute(id, arg_1, arg_2, result, 
+     .       val, taf, pct, vec, c, ddat_1d, isave_jsave, ok, eofwork)
+
+*  arg_1  variable, function of (x,y,t)
+
+*  result(i, 1,. ,. )    # eigenfunctions.
+*  result(i, 2,. ,. )    pct variation for eigenfuncton i.
+*  result(i, 3,. ,. )    eigenvalue for eigenfuncton i.
+
+*  Work arrays:
+*  val, taf, pct, vec, c, ddat_1d, isave_jsave, ok
+*  val(neof)	eigenvalues (Lambda)
+*  taf(neof,nt)	time amplitude functions (V). Dimensionless.
+*  pct(neof)	% variance represented by each EOF.
+*  c(neof,neof)	work space for cov matrix (garbage output)
+*  isave_jsave  save the locations of the data in the x-y plane
+*  eofwork	used by QRSYM and other solver routines; replaces
+*		original ALPHA, BETA, BB, and P arrays.
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+
+      COMMON /eof_stat_tgapSTOR/ mx
+      INTEGER mx
+
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, mem2loz:mem2hiz, 
+     .           mem2lot:mem2hit, mem2loe:mem2hie, mem2lof:mem2hif)
+
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+
+*  Dimension the work arrays.
+
+      REAL val(wrk1lox:wrk1hix, wrk1loy:wrk1hiy,
+     .         wrk1loz:wrk1hiz, wrk1lot:wrk1hit,
+     .         wrk1loe:wrk1hie, wrk1lof:wrk1hif)
+      REAL taf(wrk2lox:wrk2hix, wrk2loy:wrk2hiy,
+     .         wrk2loz:wrk2hiz, wrk2lot:wrk2hit,
+     .         wrk2loe:wrk2hie, wrk2lof:wrk2hif)
+      REAL pct(wrk3lox:wrk3hix, wrk3loy:wrk3hiy,
+     .         wrk3loz:wrk3hiz, wrk3lot:wrk3hit,
+     .         wrk3loe:wrk3hie, wrk3lof:wrk3hif)
+      REAL vec(wrk4lox:wrk4hix, wrk4loy:wrk4hiy,
+     .         wrk4loz:wrk4hiz, wrk4lot:wrk4hit,
+     .         wrk4loe:wrk4hie, wrk4lof:wrk4hif)
+      REAL c(wrk5lox:wrk5hix, wrk5loy:wrk5hiy,
+     .       wrk5loz:wrk5hiz, wrk5lot:wrk5hit,
+     .       wrk5loe:wrk5hie, wrk5lof:wrk5hif)
+      REAL ddat_1d(wrk6lox:wrk6hix, wrk6loy:wrk6hiy,
+     .             wrk6loz:wrk6hiz, wrk6lot:wrk6hit,
+     .             wrk6loe:wrk6hie, wrk6lof:wrk6hif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL ok(wrk8lox:wrk8hix, wrk8loy:wrk8hiy,
+     .        wrk8loz:wrk8hiz, wrk8lot:wrk8hit,
+     .        wrk8loe:wrk8hie, wrk8lof:wrk8hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable''s axes. 
+
+      INTEGER res_lo_ss(6),
+     .        res_hi_ss(6),
+     .        res_incr (6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER neof, max_neof, ier
+      CHARACTER*255 err_msg, err_out
+
+      INTEGER nx, ny, nt, k, m, n, k1, m1, n1,
+     .        iw, jw, kw, lw, mw, nw
+      REAL frac_timeser
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+*  get array sizes
+
+      nx = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      ny = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      nt = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+*  Get time percent parameter.
+
+      frac_timeser = arg_2(arg_lo_ss(X_AXIS,ARG2), 
+     .                     arg_lo_ss(Y_AXIS,ARG2),
+     .                     arg_lo_ss(Z_AXIS,ARG2), 
+     .                     arg_lo_ss(T_AXIS,ARG2),
+     .                     arg_lo_ss(E_AXIS,ARG2),
+     .                     arg_lo_ss(F_AXIS,ARG2))
+
+*  Compute EOF for each depth, ensemble, forecast
+
+      n1 = arg_lo_ss(F_AXIS,ARG1)
+      DO 300 n = res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+
+      m1 = arg_lo_ss(E_AXIS,ARG1)
+      DO 200 m = res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+
+      k1 = arg_lo_ss(Z_AXIS,ARG1)
+      DO 100 k = res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+
+*  Initialize work arrays.
+
+         DO 701 nw = wrk1lof,wrk1hif
+         DO 701 mw = wrk1loe,wrk1hie
+         DO 701 lw = wrk1lot,wrk1hit
+         DO 701 kw = wrk1loz,wrk1hiz 
+         DO 701 jw = wrk1loy,wrk1hiy
+         DO 701 iw = wrk1lox,wrk1hix
+            val(iw,jw,kw,lw,mw,nw) = 0.
+  701    CONTINUE
+
+         DO 702 nw = wrk2lof,wrk2hif
+         DO 702 mw = wrk2loe,wrk2hie
+         DO 702 lw = wrk2lot,wrk2hit
+         DO 702 kw = wrk2loz,wrk2hiz 
+         DO 702 jw = wrk2loy,wrk2hiy
+         DO 702 iw = wrk2lox,wrk2hix
+            taf(iw,jw,kw,lw,mw,nw) = 0.
+  702    CONTINUE
+
+         DO 703 nw = wrk3lof,wrk3hif
+         DO 703 mw = wrk3loe,wrk3hie
+         DO 703 lw = wrk3lot,wrk3hit
+         DO 703 kw = wrk3loz,wrk3hiz 
+         DO 703 jw = wrk3loy,wrk3hiy
+         DO 703 iw = wrk3lox,wrk3hix
+            pct(iw,jw,kw,lw,mw,nw) = 0.
+  703    CONTINUE
+
+         DO 704 nw = wrk4lof,wrk4hif
+         DO 704 mw = wrk4loe,wrk4hie
+         DO 704 lw = wrk4lot,wrk4hit
+         DO 704 kw = wrk4loz,wrk4hiz 
+         DO 704 jw = wrk4loy,wrk4hiy
+         DO 704 iw = wrk4lox,wrk4hix
+            vec(iw,jw,kw,lw,mw,nw) = 0.
+  704    CONTINUE
+
+         DO 705 nw = wrk5lof,wrk5hif
+         DO 705 mw = wrk5loe,wrk5hie
+         DO 705 lw = wrk5lot,wrk5hit
+         DO 705 kw = wrk5loz,wrk5hiz 
+         DO 705 jw = wrk5loy,wrk5hiy
+         DO 705 iw = wrk5lox,wrk5hix
+            c(iw,jw,kw,lw,mw,nw) = 0.
+  705    CONTINUE
+
+         DO 706 nw = wrk6lof,wrk6hif
+         DO 706 mw = wrk6loe,wrk6hie
+         DO 706 lw = wrk6lot,wrk6hit
+         DO 706 kw = wrk6loz,wrk6hiz 
+         DO 706 jw = wrk6loy,wrk6hiy
+         DO 706 iw = wrk6lox,wrk6hix
+            ddat_1d(iw,jw,kw,lw,mw,nw) = 0.
+  706    CONTINUE
+
+         DO 707 nw = wrk7lof,wrk7hif
+         DO 707 mw = wrk7loe,wrk7hie
+         DO 707 lw = wrk7lot,wrk7hit
+         DO 707 kw = wrk7loz,wrk7hiz 
+         DO 707 jw = wrk7loy,wrk7hiy
+         DO 707 iw = wrk7lox,wrk7hix
+            isave_jsave(iw,jw,kw,lw,mw,nw) = 0.
+  707    CONTINUE
+
+         DO 708 nw = wrk8lof,wrk8hif
+         DO 708 mw = wrk8loe,wrk8hie
+         DO 708 lw = wrk8lot,wrk8hit
+         DO 708 kw = wrk8loz,wrk8hiz 
+         DO 708 jw = wrk8loy,wrk8hiy
+         DO 708 iw = wrk8lox,wrk8hix
+            ok(iw,jw,kw,lw,mw,nw) = 0.
+  708    CONTINUE
+
+         DO 709 nw = wrk9lof,wrk9hif
+         DO 709 mw = wrk9loe,wrk9hie
+         DO 709 lw = wrk9lot,wrk9hit
+         DO 709 kw = wrk9loz,wrk9hiz 
+         DO 709 jw = wrk9loy,wrk9hiy
+         DO 709 iw = wrk9lox,wrk9hix
+            eofwork(iw,jw,kw,lw,mw,nw) = 0.
+  709    CONTINUE
+
+*  Find the number of eofs to solve for.
+*  neof = number of (x,y) points with frac_timeser  good data.  
+*  Set OK to mark where they are.  (note this also allows for 
+*  working around continental boundaries or other areas where 
+*  entire time series are missing)
+
+         CALL count_neof (arg_1, neof, ok, nx, ny, nt, k1, m1, n1,
+     .                    arg_lo_ss, arg_hi_ss, arg_incr, mx,
+     .                    bad_flag(ARG1), frac_timeser, err_msg, ier)
+         IF (ier .ne. 0) then
+            GOTO 5010
+         ENDIF
+
+*  Put the data into the array ddat_1d(neof,nt) 
+
+         CALL pack_ef (arg_1, ddat_1d, isave_jsave, neof,  
+     .                 ok, frac_timeser, nx, ny, nt, k1, m1, n1,
+     .                 arg_lo_ss, arg_hi_ss, arg_incr)
+
+*  Solve for the EOF's: eigenvectors, time functions, percent variance explained.
+
+         CALL solve_eof_stat_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag(ARG1), bad_flag_result,
+     .            frac_timeser, err_msg, ier)
+         IF (ier .NE. 0) GOTO 5020
+
+         k1 = k1 + arg_incr(Z_AXIS,ARG1)
+  100 CONTINUE
+         m1 = m1 + arg_incr(E_AXIS,ARG1)
+  200 CONTINUE
+         n1 = n1 + arg_incr(F_AXIS,ARG1)
+  300 CONTINUE
+
+      RETURN
+
+ 5010 CALL ef_bail_out (id, err_msg)
+      RETURN
+
+ 5020 WRITE (err_out, 5500) k, m, n, err_msg 
+ 5500 FORMAT ('k,m,n=', 3I3, A250)
+      CALL ef_bail_out (id, err_out)
+      RETURN
+
+      END
+
+***********************************************************************
+
+      SUBROUTINE solve_eof_stat_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag_dat, bad_flag_result, 
+     .            frac_timeser, err_msg, ier)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+* arguments
+      INTEGER neof, nt, k, m, n
+      REAL ddat_1d(neof,nt)
+      REAL val(*)
+      REAL vec(neof, neof)
+      REAL taf(neof, nt)
+      REAL pct(*)
+      REAL c(neof, neof)
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr(6)
+      REAL bad_flag_dat, bad_flag_result, frac_timeser
+      CHARACTER*(*) err_msg
+      INTEGER ier
+
+* local variables
+      INTEGER i, j, l
+
+      IF (frac_timeser .LT. 1.) THEN
+         CALL EOFIN_CHEL_GAP (ddat_1d, neof, nt, val, vec, taf, pct, c, 
+     .            eofwork, bad_flag_dat, bad_flag_result, err_msg, ier)
+         IF (ier .NE. 0) RETURN
+      ELSE
+         CALL EOFIN(ddat_1d, neof, nt, val, vec, taf, pct, c, eofwork)
+      ENDIF
+
+*  Result for j = 1 is the # eigenfunctions.
+
+      j =  res_lo_ss(Y_AXIS)
+      DO 130 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+         DO 110 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+            result(i,j,k,l,m,n) = neof
+  110    CONTINUE
+  130 CONTINUE
+
+*  Result for j = 2 is the percent variation explained by the eigenfunctions
+
+      j =  j + res_incr(Y_AXIS)
+      DO 230 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+         DO 210 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+            result(i,j,k,l,m,n) = pct(i)
+  210    CONTINUE
+  230 CONTINUE
+
+*  Result for j = 3 is the eigenvalue for each eigenfunction
+
+      j =  j + res_incr(Y_AXIS)
+      DO 330 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+         DO 310 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+            result(i,j,k,l,m,n) = val(i)
+  310    CONTINUE
+  330 CONTINUE
+
+      RETURN
+      END
diff --git a/external_functions/eof/eof_tfunc_tgap.F b/external_functions/eof/eof_tfunc_tgap.F
new file mode 100644
index 0000000..e519579
--- /dev/null
+++ b/external_functions/eof/eof_tfunc_tgap.F
@@ -0,0 +1,617 @@
+*
+*  eof_tfunc_tgap.F
+*
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+* Ansley Manke
+* Sep 1998
+* Aug 2000 change fcn description; argument can be fcn of Z as well as x,y,t
+* May 2001 Use simpler solver EOFIN when frac_timeser = 1.
+* Jul 2001 Move to statically linked code in fer/efi.
+* Jul 2001 move count_eof and pack_eof to file eofsubs.f, rename solve_eof
+*          to solve_eof_tfunc_tgap.
+*          Make the function work w/ data having multiple depths: compute
+*          EOF solution for each depth.
+* Aug 2001 move to fer/efi directory, to be statically linked to Ferret.  
+*	   Change INCLUDE statements to remove directory spec.
+* Feb 2003 Add a test that NEOF <= max_neof, which is dictated by work
+*          arrays in the solvers in TRIDIN in eofsubs.F
+* Jun 2003 Workspace arrays need to be initialized for each vertical level.
+*
+* Compute EOF/s and time amplitude funcions from a 2-d field, or for each level 
+* of a 3-D field.  Based on programs (coadseof.f, etc.) by Dai McClurg and 
+* Ansley Manke and calls Billy Kessler's method for finding EOFs  of NON-gappy 
+* time series EOFIN, or optionally his implementation of Chelton's '82 method 
+* for finding EOFs of gappy time series.
+*
+* Return time amplitude functions.
+*
+*
+* In this SUBROUTINE we provide information about
+* the function.  The user configurable information 
+* consists of the following:
+*
+* descr              Text description of the function
+*
+* num_args           Required number of arguments
+*
+* axis_inheritance   Type of axis for the result
+*                       ( CUSTOM, IMPLIED_BY_ARGS, NORMAL, ABSTRACT )
+*                       CUSTOM          - user defined axis
+*                       IMPLIED_BY_ARGS - same axis as the incoming argument
+*                       NORMAL          - the result is normal to this axis
+*                       ABSTRACT        - an axis which only has index values
+*
+* piecemeal_ok       For memory optimization:
+*                       axes where calculation may be performed piecemeal
+*                       ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE eof_tfunc_tgap_init(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+
+      INTEGER id, arg
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+      CALL ef_set_desc(id,
+     .   'Compute EOF time functions from XYT field with gappy time series')
+
+      CALL ef_set_num_args(id, 2)
+
+      CALL ef_set_axis_inheritance_6d(id,
+     .                                ABSTRACT,        NORMAL,
+     .                                IMPLIED_BY_ARGS, IMPLIED_BY_ARGS,
+     .                                IMPLIED_BY_ARGS, IMPLIED_BY_ARGS)
+      CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+
+
+      CALL ef_set_num_work_arrays(id, 9)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'A')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     .                     'Variable in x,y,t; may be fcn of z,e,f')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              NO, NO, YES, YES, YES, YES)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'frac_timeser')
+      CALL ef_set_arg_unit(id, arg, ' ')
+      CALL ef_set_arg_desc(id, arg,
+     . 'Use only those time series with this fraction valid data')
+      CALL ef_set_axis_influence_6d(id, arg,
+     .                              NO, NO, NO, NO, NO, NO)
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+************************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* loss               lo subscript for an axis
+*
+* hiss               hi subscript for an axis
+*
+
+      SUBROUTINE eof_tfunc_tgap_result_limits(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      INTEGER my_lo_l, my_hi_l
+
+      INTEGER nx, ny
+
+*     Use utility functions to get context information about the 
+*     1st argument, to set the abstract axis lo and hi indices.
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      nx = arg_hi_ss(X_AXIS, ARG1) - arg_lo_ss(X_AXIS, ARG1) + 1
+      ny = arg_hi_ss(Y_AXIS, ARG1) - arg_lo_ss(Y_AXIS, ARG1) + 1
+
+      my_lo_l = 1
+      my_hi_l = nx * ny
+
+      CALL ef_set_axis_limits(id, X_AXIS, my_lo_l, my_hi_l)
+
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+*
+* In this subroutine we request an amount of storage to be supplied
+* by Ferret and passed as an additional argument.
+*
+      SUBROUTINE eof_tfunc_tgap_work_size(id)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+*
+* Set the work arrays, X/Y/Z/T/E/F dimensions
+*
+* ef_set_work_array_dims_6d(id, array #,
+*                           xlo, ylo, zlo, tlo, elo, flo,
+*                           xhi, yhi, zhi, thi, ehi, fhi)
+*
+      COMMON /eof_tfunc_tgapSTOR/ mx
+      INTEGER mx1, my1, mt1, mxmt, mxmx, mx
+
+      INTEGER iwork
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+      mx1 = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      my1 = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      mt1 = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+      mx = mx1 * my1 + 10
+      mxmt = mx * mt1 + 10
+      mxmx = mx * mx + 10
+
+*  val
+      iwork = 1
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  taf
+      iwork = 2
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  pct
+      iwork = 3
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 1, 1, 1, 1, 1)
+
+*  vec
+      iwork = 4
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  c
+      iwork = 5
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmx, 1, 1, 1, 1, 1)
+
+*  ddat_1d
+      iwork = 6
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                             mxmt, 1, 1, 1, 1, 1)
+
+*  isave_jsave
+      iwork = 7
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1, 1, 1, 1, 1, 1,
+     .                               mx, 2, 1, 1, 1, 1)
+
+*  ok
+      iwork = 8
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,   1, 1, 1, 1, 1,
+     .                              mx1, my1, 1, 1, 1, 1)
+
+*  eofwork
+      iwork = 9
+      CALL ef_set_work_array_dims_6d(id, iwork,
+     .                                1,  1, 1, 1, 1, 1,
+     .                               mx, 10, 1, 1, 1, 1)
+
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+*
+* In this SUBROUTINE we compute the result
+*
+
+      SUBROUTINE  eof_tfunc_tgap_compute(id, arg_1, arg_2, result, 
+     .       val, taf, pct, vec, c, ddat_1d, isave_jsave, ok, eofwork)
+
+*  arg_1  variable, function of (x,y,t)
+*  result neof*NT time amplitude functions
+
+*  Work arrays:
+*  val, taf, pct, vec, c, ddat_1d, isave_jsave, ok
+
+*  val(neof)	eigenvalues (Lambda)
+*  result == vec(neof,neof) eigenvectors (Lambda*U). Same units as data.
+*  taf(neof,nt)	time amplitude functions (V). Dimensionless.
+*  pct(neof)	% variance represented by each EOF.
+*  c(neof,neof)	work space for cov matrix (garbage output)
+*  isave_jsave  save the locations of the data in the x-y plane
+*  eofwork	used by QRSYM and other solver routines; replaces
+*		original ALPHA, BETA, BB, and P arrays.
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      COMMON /eof_tfunc_tgapSTOR/ mx
+      INTEGER mx
+
+      INTEGER id
+
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, mem2loz:mem2hiz, 
+     .           mem2lot:mem2hit, mem2loe:mem2hie, mem2lof:mem2hif)
+
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+
+*  Dimension the work arrays.
+
+      REAL val(wrk1lox:wrk1hix, wrk1loy:wrk1hiy,
+     .         wrk1loz:wrk1hiz, wrk1lot:wrk1hit,
+     .         wrk1loe:wrk1hie, wrk1lof:wrk1hif)
+      REAL taf(wrk2lox:wrk2hix, wrk2loy:wrk2hiy,
+     .         wrk2loz:wrk2hiz, wrk2lot:wrk2hit,
+     .         wrk2loe:wrk2hie, wrk2lof:wrk2hif)
+      REAL pct(wrk3lox:wrk3hix, wrk3loy:wrk3hiy,
+     .         wrk3loz:wrk3hiz, wrk3lot:wrk3hit,
+     .         wrk3loe:wrk3hie, wrk3lof:wrk3hif)
+      REAL vec(wrk4lox:wrk4hix, wrk4loy:wrk4hiy,
+     .         wrk4loz:wrk4hiz, wrk4lot:wrk4hit,
+     .         wrk4loe:wrk4hie, wrk4lof:wrk4hif)
+      REAL c(wrk5lox:wrk5hix, wrk5loy:wrk5hiy,
+     .       wrk5loz:wrk5hiz, wrk5lot:wrk5hit,
+     .       wrk5loe:wrk5hie, wrk5lof:wrk5hif)
+      REAL ddat_1d(wrk6lox:wrk6hix, wrk6loy:wrk6hiy,
+     .             wrk6loz:wrk6hiz, wrk6lot:wrk6hit,
+     .             wrk6loe:wrk6hie, wrk6lof:wrk6hif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL ok(wrk8lox:wrk8hix, wrk8loy:wrk8hiy,
+     .        wrk8loz:wrk8hiz, wrk8lot:wrk8hit,
+     .        wrk8loe:wrk8hie, wrk8lof:wrk8hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable''s axes. 
+
+      INTEGER res_lo_ss(6),
+     .        res_hi_ss(6),
+     .        res_incr (6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+
+************************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER neof, ier
+      CHARACTER*255 err_msg, err_out
+
+      INTEGER nx, ny, nt, k, m, n, k1, m1, n1,
+     .        iw, jw, kw, lw, mw, nw
+      REAL frac_timeser
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+*  get array sizes
+
+      nx = 1 + arg_hi_ss(X_AXIS,ARG1) - arg_lo_ss(X_AXIS,ARG1)
+      ny = 1 + arg_hi_ss(Y_AXIS,ARG1) - arg_lo_ss(Y_AXIS,ARG1)
+      nt = 1 + arg_hi_ss(T_AXIS,ARG1) - arg_lo_ss(T_AXIS,ARG1)
+
+*  Get time percent parameter.
+
+      frac_timeser = arg_2(arg_lo_ss(X_AXIS,ARG2), 
+     .                     arg_lo_ss(Y_AXIS,ARG2),
+     .                     arg_lo_ss(Z_AXIS,ARG2), 
+     .                     arg_lo_ss(T_AXIS,ARG2),
+     .                     arg_lo_ss(E_AXIS,ARG2),
+     .                     arg_lo_ss(F_AXIS,ARG2))
+
+*  Compute EOF for each depth, ensemble, forecast
+
+      n1 = arg_lo_ss(F_AXIS,ARG1)
+      DO 300 n = res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+
+      m1 = arg_lo_ss(E_AXIS,ARG1)
+      DO 200 m = res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+
+      k1 = arg_lo_ss(Z_AXIS,ARG1)
+      DO 100 k = res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+
+*  Initialize work arrays.
+
+         DO 701 nw = wrk1lof,wrk1hif
+         DO 701 mw = wrk1loe,wrk1hie
+         DO 701 lw = wrk1lot,wrk1hit
+         DO 701 kw = wrk1loz,wrk1hiz 
+         DO 701 jw = wrk1loy,wrk1hiy
+         DO 701 iw = wrk1lox,wrk1hix
+            val(iw,jw,kw,lw,mw,nw) = 0.
+  701    CONTINUE
+
+         DO 702 nw = wrk2lof,wrk2hif
+         DO 702 mw = wrk2loe,wrk2hie
+         DO 702 lw = wrk2lot,wrk2hit
+         DO 702 kw = wrk2loz,wrk2hiz 
+         DO 702 jw = wrk2loy,wrk2hiy
+         DO 702 iw = wrk2lox,wrk2hix
+            taf(iw,jw,kw,lw,mw,nw) = 0.
+  702    CONTINUE
+
+         DO 703 nw = wrk3lof,wrk3hif
+         DO 703 mw = wrk3loe,wrk3hie
+         DO 703 lw = wrk3lot,wrk3hit
+         DO 703 kw = wrk3loz,wrk3hiz 
+         DO 703 jw = wrk3loy,wrk3hiy
+         DO 703 iw = wrk3lox,wrk3hix
+            pct(iw,jw,kw,lw,mw,nw) = 0.
+  703    CONTINUE
+
+         DO 704 nw = wrk4lof,wrk4hif
+         DO 704 mw = wrk4loe,wrk4hie
+         DO 704 lw = wrk4lot,wrk4hit
+         DO 704 kw = wrk4loz,wrk4hiz 
+         DO 704 jw = wrk4loy,wrk4hiy
+         DO 704 iw = wrk4lox,wrk4hix
+            vec(iw,jw,kw,lw,mw,nw) = 0.
+  704    CONTINUE
+
+         DO 705 nw = wrk5lof,wrk5hif
+         DO 705 mw = wrk5loe,wrk5hie
+         DO 705 lw = wrk5lot,wrk5hit
+         DO 705 kw = wrk5loz,wrk5hiz 
+         DO 705 jw = wrk5loy,wrk5hiy
+         DO 705 iw = wrk5lox,wrk5hix
+            c(iw,jw,kw,lw,mw,nw) = 0.
+  705    CONTINUE
+
+         DO 706 nw = wrk6lof,wrk6hif
+         DO 706 mw = wrk6loe,wrk6hie
+         DO 706 lw = wrk6lot,wrk6hit
+         DO 706 kw = wrk6loz,wrk6hiz 
+         DO 706 jw = wrk6loy,wrk6hiy
+         DO 706 iw = wrk6lox,wrk6hix
+            ddat_1d(iw,jw,kw,lw,mw,nw) = 0.
+  706    CONTINUE
+
+         DO 707 nw = wrk7lof,wrk7hif
+         DO 707 mw = wrk7loe,wrk7hie
+         DO 707 lw = wrk7lot,wrk7hit
+         DO 707 kw = wrk7loz,wrk7hiz 
+         DO 707 jw = wrk7loy,wrk7hiy
+         DO 707 iw = wrk7lox,wrk7hix
+            isave_jsave(iw,jw,kw,lw,mw,nw) = 0.
+  707    CONTINUE
+
+         DO 708 nw = wrk8lof,wrk8hif
+         DO 708 mw = wrk8loe,wrk8hie
+         DO 708 lw = wrk8lot,wrk8hit
+         DO 708 kw = wrk8loz,wrk8hiz 
+         DO 708 jw = wrk8loy,wrk8hiy
+         DO 708 iw = wrk8lox,wrk8hix
+            ok(iw,jw,kw,lw,mw,nw) = 0.
+  708    CONTINUE
+
+         DO 709 nw = wrk9lof,wrk9hif
+         DO 709 mw = wrk9loe,wrk9hie
+         DO 709 lw = wrk9lot,wrk9hit
+         DO 709 kw = wrk9loz,wrk9hiz 
+         DO 709 jw = wrk9loy,wrk9hiy
+         DO 709 iw = wrk9lox,wrk9hix
+            eofwork(iw,jw,kw,lw,mw,nw) = 0.
+  709    CONTINUE
+
+*  Find the number of EOFS to solve for.
+*  neof = number of (x,y) points with frac_timeser good data.  
+*  Set OK to mark where they are.  (note this also allows for 
+*  working around continental boundaries or other areas where 
+*  entire time series are missing)
+
+         CALL count_neof (arg_1, neof, ok, nx, ny, nt, k1, m1, n1,
+     .                    arg_lo_ss, arg_hi_ss, arg_incr, mx,
+     .                    bad_flag(ARG1), frac_timeser, err_msg, ier)
+         IF (ier .NE. 0) then
+            GOTO 5010
+         ENDIF
+
+*  Put the data into the array ddat_1d(neof,nt) 
+
+         CALL pack_ef (arg_1, ddat_1d, isave_jsave, neof,  
+     .                 ok, frac_timeser, nx, ny, nt, k1, m1, n1,
+     .                 arg_lo_ss, arg_hi_ss, arg_incr)
+
+*  Solve for the EOF's: eigenvectors, time functions, percent variance explained.
+
+         CALL solve_eof_tfunc_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag(ARG1), bad_flag_result,
+     .            frac_timeser, err_msg, ier)
+         IF (ier .NE. 0) GOTO 5020
+
+         k1 = k1 + arg_incr(Z_AXIS,ARG1)
+  100 CONTINUE
+         m1 = m1 + arg_incr(E_AXIS,ARG1)
+  200 CONTINUE
+         n1 = n1 + arg_incr(F_AXIS,ARG1)
+  300 CONTINUE
+
+      RETURN
+
+ 5010 CALL ef_bail_out (id, err_msg)
+      RETURN
+
+ 5020 WRITE (err_out, 5500) k, m, n, err_msg 
+ 5500 FORMAT ('k,m,n=', 3I3, A250)
+      CALL ef_bail_out (id, err_out)
+      RETURN
+
+      END
+
+***********************************************************************
+
+      SUBROUTINE solve_eof_tfunc_tgap (ddat_1d, neof, nt, k, m, n, val, vec, 
+     .            taf, pct, c, result, isave_jsave, eofwork, res_lo_ss,
+     .            res_hi_ss, res_incr, bad_flag_dat, bad_flag_result, 
+     .            frac_timeser, err_msg, ier)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+* arguments
+      INTEGER neof, nt, k, m, n
+      REAL ddat_1d(neof,nt)
+      REAL val(*)
+      REAL vec(neof, neof)
+      REAL taf(neof, nt)
+      REAL pct(*)
+      REAL c(neof, neof)
+      REAL result(memreslox:memreshix, memresloy:memreshiy, 
+     .            memresloz:memreshiz, memreslot:memreshit,
+     .            memresloe:memreshie, memreslof:memreshif)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy,
+     .             wrk9loz:wrk9hiz, wrk9lot:wrk9hit,
+     .             wrk9loe:wrk9hie, wrk9lof:wrk9hif)
+      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr(6)
+      REAL bad_flag_dat, bad_flag_result, frac_timeser
+      CHARACTER*(*) err_msg
+      INTEGER ier
+
+* local variables
+      INTEGER i, j, l, cnt
+
+      IF (frac_timeser .LT. 1.) THEN
+         CALL EOFIN_CHEL_GAP (ddat_1d, neof, nt, val, vec, taf, pct, c, 
+     .            eofwork, bad_flag_dat, bad_flag_result, err_msg, ier)
+         IF (ier .NE. 0) RETURN
+      ELSE
+         CALL EOFIN(ddat_1d, neof, nt, val, vec, taf, pct, c, eofwork)
+      ENDIF
+
+*  Result is the time functions. 
+
+      j = res_lo_ss(Y_AXIS)
+      DO 120 i = 1, neof
+         cnt = 1
+         DO 110 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+            result(i,j,k,l,m,n) = taf(i,cnt)
+            cnt = cnt + 1
+  110    CONTINUE
+  120 CONTINUE
+
+      DO 220 i = neof+1, res_hi_ss(X_AXIS)
+         DO 210 l = res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+            result(i,j,k,l,m,n) = bad_flag_result
+  210    CONTINUE
+  220 CONTINUE
+
+      RETURN
+      END
diff --git a/external_functions/eof/eofsubs.F b/external_functions/eof/eofsubs.F
new file mode 100644
index 0000000..3d51d5b
--- /dev/null
+++ b/external_functions/eof/eofsubs.F
@@ -0,0 +1,1012 @@
+C eofsubs.F
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration''s (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+* 
+C  EOF code from Billy Kessler.  For cases where time series do not
+C  have any gaps.  Implemented 7/2001
+C
+C  At end are routines count_eof and pack_eof written with Dai McClurg
+C  to count the good timeseries and pack the X,Y,T  array into an neof by T
+C  array.
+C
+C
+C  Ansley Manke       Change dimension statements for arguments to be (*) or
+C                     (NX,*), etc.  The work arrays in the calling functions
+C                     have extra space to accomodate I = 1,N... BB(I+1) in 
+C                     QRSYM, for example.
+C
+C                     Declare all variables.
+C
+C Aug 2001 move to fer/efi directory, EPFs to be statically linked to Ferret.  
+C	   Change INCLUDE statements to remove directory spec.
+C
+
+C v5.41 *kob* 6/02 - remove unneeded ferret_cmn from INCLUDE lines - 
+C                    cygwin does not like them for some reason
+C
+c Date: Thu, 18 Jan 2001 16:44:10 -0800 (PST)
+c From: kessler at pmel.noaa.gov (Billy Kessler)
+c Subject: more EOF code (reverse time and space)
+c 
+c The attached code (one file) contains the following subroutines:
+c 
+c First set are three different front ends that call the
+c routines at bottom that do the work:
+c 
+c EOFIN         ! for usual EOFs (more times than locations)
+c EOFIN2	! EOFs when there are more locations than times
+c EOFIN3C	! routine that allows weighting the data (probably 
+c	           get rid of this one for ferret)
+c
+c These are the black-box routines that do the actual work
+c 
+c FRACVAR	! find percent variance at each point
+c QRSYM		! call all the other routines in turn
+c HOUSEH	! Householder tridiagonalization of matrix
+c QRSTD		! find eigenvalues of tridiagonal matrix
+c TRIDIN	! find eigenvectors of tridiagonal matrix
+c BACKS		! does something
+c 
+c * Actually, either EOFIN or EOFIN2 produces exactly the same
+c result (but see note 1). These two routines do not care about 
+c zero eigenvalues, so there is really no restriction at all on 
+c their use. However, EOFIN2 will be faster if there are more 
+c locations than times. So a possible choice for this whole mess 
+c would be just to use EOFIN for all cases (except for gappy time 
+c series). That might be the most straightforward thing to do,
+c even if it is not the most elegant code.
+c 
+c Notes: 
+c 
+c Note 1: The eigenvalues out of EOFIN2 differ from those of EOFIN
+c by the factor (NT/NX). THis is due to the fact that there are NT 
+c non-zero eigenvalues produced by EOFIN2 (since it assumes that NT<NX), 
+c while there are NX produced by EOFIN. However, I have scaled the 
+c EOFs and PCs to be identical. This should not matter to anyone.
+c 
+c Note 3: Differences between the outputs of these three occur for
+c the higher eigenvalues/vectors, as the values of the eigenvalues
+c come down towards the computational noise and slight differences
+c in cutoff values hardwired into the routines. These are iterative
+c search routines and I have not tried to make the cutoffs (when the
+c routine decides it has found a value) consistent. This should not 
+c matter for geophysical work.
+c 
+c Note 4: Odd results can occur in SVDEOF for input fields that do
+c not have NX degrees of freedom. I spent an embarrassingly long
+c amount of time this afternoon "debugging" a test program that I
+c was feeding a simple idealized (product of sinusoids) field. The
+c field could be represented in only a handful of eigenvectors, but
+c SVDEOF cranked off NX of them, and the higher eigenvalues were
+c pure noise. Some of them were large though, and overwhelmed the
+c others. So if you are making up test fields, use the RANDU 
+c function to add sufficient noise to "use up" all the eigenvectors.
+c This will not be a problem for geophysical fields, which always
+c have sufficient noise. For some reason EOFIN and EOFIN2 do not
+c appear to have this problem.
+c 
+c Note 5: I wrote this code in 1982-83, with Nancy Soreide (then a 
+c programmer for Stan Hayes) holding my hand. It was the first thing
+c I did as a graduate student.
+c 
+c Billy
+
+C-------------------------------------------------------------------------------
+C	EOFSUB_2.FOR MODIFIES TRIDIN TO PASS OVERFLOW. SEE NEAR END OF TRIDIN.
+C	ALSO MODIFIES QRSYM TO NOTE PROGRESS TO 6.
+C-------------------------------------------------------------------------------
+
+C.................EOFIN.FOR is a front end to the EOF subroutines which follow.
+C.................Arrangement of output:
+C					  VEC(position,EOF#)
+C					  TAF(EOF#,time)
+
+c	Variables:
+c	data(nx,nt)	I/O	original data		Returned demeaned
+c	nx		I	number of spatial locations
+c	nt		I	number of time realizations
+c	val(nx)		O	eigenvalues (Lambda)
+c	vec(nx,nx)	O	eigenvectors (Lambda*U). Same units as data.
+c	taf(nx,nt)	O	time amplitude functions (V). Dimensionless.
+c	pct(nx)		O	% variance represented by each EOF.
+		
+	SUBROUTINE EOFIN(DATA,NX,NT,VAL,VEC,TAF,PCT,C,eofwork)
+
+        IMPLICIT NONE
+
+C  Calling argument declarations.
+
+        INTEGER   NX, NT
+	REAL      DATA(NX,*),PCT(*),VAL(*),VEC(NX,*),TAF(NX,*),C(NX,*)
+	REAL eofwork(*)
+
+C  Internal declarations
+
+	INTEGER I, J, I1, I2, IE, IS
+	REAL TVAR, RNT
+C---------------------------------------------------------------------
+C.................Find mean, demean DATA.
+C.................Note PCT is used first as a dummy to save the mean.
+	RNT = NT
+	DO 100 I=1,NX
+	PCT(I)=0.0
+	DO 110 J=1,NT
+110	PCT(I)=PCT(I)+DATA(I,J)/RNT
+	DO 120 J=1,NT
+120	DATA(I,J)=DATA(I,J)-PCT(I)
+100	CONTINUE
+C--------------------------------------------------------------------
+C.................Form the mean product matrix.
+	DO 210 I1=1,NX
+	DO 211 I2=1,NX
+
+	DO 200 J=1,NT
+200	C(I1,I2) = C(I1,I2) + DATA(I1,J) * DATA(I2,J)
+
+	C(I1,I2) = C(I1,I2)/ RNT
+
+211	CONTINUE
+210	CONTINUE
+C------------------------------------------------------------------------
+C.................Call the subroutines which do the work.
+
+	CALL QRSYM(C,NX,VAL,VEC, eofwork)
+
+C.................VEC(IS,IE) is arranged so that IS indexes the space
+C.................dimension of each eigenvector and IE the EOF number.
+C------------------------------------------------------------------------
+C.................Find the percentage of total variance accounted for by
+C.................each eigenvector.
+	TVAR=0.0
+	DO 220 I=1,NX
+220	TVAR=TVAR+VAL(I)
+	DO 221 I=1,NX
+221	PCT(I)=100.*ABS(VAL(I)/TVAR)
+C------------------------------------------------------------------------
+C.................Renormalize EOFs.
+C.................Thus EOFs have units of data, while time amplitude functions
+C.................are dimensionless.
+C.................Thus the sum of the squares of a given EOF = eigenvalue.
+C.................And the mean of a given TAF = 1.
+C-------------------------------------------------------------------------
+C.................First compute the time amplitude function from the data.
+C.................Renormalize each TAF by dividing by SQRT of its eigenvalue.
+
+	DO 350 J=1,NT			! loop over time
+	DO 360 IE=1,NX			! loop over EOF numbers
+
+	TAF(IE,J)=0.0
+
+	DO 370 IS=1,NX
+370	TAF(IE,J) = TAF(IE,J) + VEC(IS,IE)*DATA(IS,J)/SQRT(ABS(VAL(IE)))
+
+360	CONTINUE
+350	CONTINUE
+
+C.................Renormalize each EOF by the SQRT of its eigenvalue.
+
+	DO 300 IE=1,NX			! loop over EOF numbers
+	DO 310 IS=1,NX
+310	VEC(IS,IE) = VEC(IS,IE)*SQRT(ABS(VAL(IE)))
+300	CONTINUE
+C----------------------------------------------------------------------
+	RETURN
+	END
+		
+
+C************************************************************************
+
+
+c -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+C  eofin_chel_gap from Billy Kessler.  
+C  Ansley Manke 9/98  Change to have the bad-data flag "realbad" an argument
+C                     and to test for .GT. realbad rather than .LT.
+C                     Add argument pct_cutoff for where to stop the computations
+C                     that normalize eigenvectors and compute time functions,
+C                     and returning nout = number of functions to output.
+C  Ansley Manke 8/99  Change dimension statements for arguments to be (*) or
+C                     (NX,*), etc.  The work arrays in the calling functions
+C                     now have extra space to accomodate I = 1,N... BB(I+1) in 
+C                     QRSYM, for example.
+C  Ansley Manke 10/00 Change bad-data flag "realbad"  to bad_flag_dat
+C                     and a separate flag for bad_flag_result, the bad-data
+C                     flag for the result.
+C  Ansley Manke 1/01  declare all variables.
+C
+C  Ansley Manke 5/01  remove pct_cutoff as a parameter
+C 
+C  Ansley Manke 9/05  Make all workspace be allocated as external function work 
+C                     arrays. Arrays in TRIDIN passed in rather than declared.
+C  Ansley Manke 7/12  Changes for solving EOF's in double precision.
+ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+c
+ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
+c
+c	eof_gap_sub4.f 
+c	implements Chelton's '82 method for finding EOFs of gappy time series.
+c	4 fixes a few imprecisions in earlier versions:
+c		1) sets negative eigenvalues to eps = 1/10th smallest EV
+c		2) blanks TAF if ALL data missing at a given time realization.
+c	If no gaps, reduces to ordinary EOFs (but computationally wasteful).
+c	Requires eigenvalue finder SUBROUTINEs in eofsub_2.for.
+c	Gaps assumed to be marked by values = 1.e34.
+c***************************************************************************
+
+C..........SUBROUTINE EOFIN_CHEL_GAP 
+c..........is a front end to the EOF SUBROUTINEs in eofsub_2.for.
+
+
+c	Variables:
+c	data(nx,nt)	I/O	original data.	Returned demeaned.
+c	nx		I	number of spatial locations
+c	nt		I	number of time realizations
+c	val(nx)		O	eigenvalues (Lambda)
+c	vec(nx,nx)	O	eigenvectors (Lambda*U). Same units as data.
+c	taf(nx,nt)	O	time amplitude functions (V). Dimensionless.
+c	pct(nx)		O	% variance represented by each EOF.
+c	c(nx,nx)	O	work space for cov matrix (garbage output)
+
+C..........Arrangement of output:
+C					  VEC(position,EOF#)
+C					  TAF(EOF#,time)
+		
+C---------------------------------------------------------------------
+      SUBROUTINE EOFIN_CHEL_GAP (DATA,NX,NT,VAL,VEC,TAF,PCT,C, 
+     +      eofwork, bad_flag_dat, bad_flag_result, err_msg, ier)
+
+        IMPLICIT NONE
+
+        INTEGER nx
+	REAL DATA(NX,*), PCT(*), VAL(*), VEC(NX,*),
+     +            TAF(NX,*), C(NX,*)
+
+      CHARACTER*(*) err_msg
+
+      INTEGER nt, ier, ix, i2, it, i, j, i1, ie, npr,
+     .        ic, is
+      REAL ct, eps, sumljgji, beta, tvar
+
+      REAL eofwork(*)
+      REAL bad_flag_dat, bad_flag_result
+
+C---------------------------------------------------------------------
+c.............initializations.
+
+        ier = 0
+	do 50 ix=1,nx
+	val(ix)=0.
+	pct(ix)=0.
+	do 51 i2=1,nx
+	vec(ix,i2)=0.
+51	c(ix,i2)=0.
+	do 52 it=1,nt
+52	taf(ix,it)=0.
+50	continue
+C---------------------------------------------------------------------
+C.................Find mean, demean DATA.
+C.................Note PCT is used first as a dummy to save the mean.
+	DO 100 I=1,NX
+	ct=0.
+	DO 110 J=1,NT
+	if (data(i,j).GT.bad_flag_dat) then
+		PCT(I)=PCT(I)+DATA(I,J)
+		ct=ct+1.
+	endif
+110	continue
+	if (ct.gt.0.) then
+		pct(i)=pct(i)/ct
+	else
+	   write(err_msg,*) ' EOFIN_CHEL_GAP found the time series',
+     .                     ' at ix=',i,' with no values.'
+           ier = 1
+	   return
+	endif
+	DO 120 J=1,NT
+	if (data(i,j).GT.bad_flag_dat) then
+		DATA(I,J)=DATA(I,J)-PCT(I)
+	endif
+120	continue
+100	CONTINUE
+C--------------------------------------------------------------------
+C.................Form the mean product matrix.
+	DO 210 I1=1,NX
+	DO 210 I2=1,NX
+
+	ct=0.
+	DO 200 J=1,NT
+	if (data(i1,j).GT.bad_flag_dat .and. data(i2,j).GT.bad_flag_dat) then
+		ct=ct+1.
+		C(I1,I2) = C(I1,I2) + DATA(I1,J) * DATA(I2,J)
+	endif
+200	continue
+
+	if (ct.gt.0.) then
+		c(i1,i2)=c(i1,i2)/ct
+	else
+           write(err_msg,*) ' EOFIN_CHEL_GAP found no overlapping',
+     .       ' values in two time series at EOF-1D-coordinates ', 
+     .       i1,i2, ' Will be a zero in covariance matrix'
+           ier = 1
+           return
+	endif
+
+210	CONTINUE
+C------------------------------------------------------------------------
+C.................Call the subroutines which do the work.
+
+	CALL QRSYM(C,NX,VAL,VEC, eofwork) 
+
+C.................VEC(IS,IE) is arranged so that IS indexes the space
+C.................dimension of each eigenvector and IE the EOF number.
+C------------------------------------------------------------------------
+c...................check for negative eigenvalues, set to eps.
+	do 250 ie=1,nx
+250	if (val(ie).lt.0.) GOTO 251
+	GOTO 252
+
+251	continue
+cc 251	write(6,*) 'Found a negative eigenvalue. EV#',ie,
+cc     .        ' Further checking ...'
+cc 251	write(6,*) 'Found a negative eigenvalue. Further checking ...'
+
+	eps=1.e20
+	do 255 ie=1,nx
+255	if (abs(val(ie)).lt.eps) eps=abs(val(ie))
+	eps=eps/10.
+cc	write(6,*) 'Setting epsilon to',eps
+cc	write(6,*) '= 1/10th of the smallest eigenvalue'
+	do 256 ie=1,nx
+	if (val(ie).lt.0.) then
+cc		write(6,*) 'Setting EV #',ie,' =',val(ie),
+cc     .					' to epsilon (=',eps,')'
+		val(ie)=eps
+	endif
+256	continue
+252	continue
+
+C----------------------------------------------------------------------
+C !ACM  Array pctis used as a dummy array below, and we will compute it 
+C       again before returning.
+C.................Find the percentage of total variance accounted for by
+C.................each eigenvector.
+c.................Place this at the end to be able to use pct as dummy
+c.................for counting missing data in TAF calculation.
+	TVAR=0.0
+	DO 1220 I=1,NX
+1220	TVAR=TVAR+VAL(I)
+	DO 1221 I=1,NX
+	PCT(I)=100.*ABS(VAL(I)/TVAR)
+c 1221	IF (PCT(I) .GE. pct_cutoff) NX_compute = I
+1221	CONTINUE
+
+C------------------------------------------------------------------------
+C.................Renormalize EOFs.
+C.................Thus EOFs have units of data, while time amplitude functions
+C.................are dimensionless.
+C.................Thus the sum of the values of a given EOF = SQRT(eigenvalue).
+C.................And the mean of a given TAF = 1.
+C-------------------------------------------------------------------------
+C.................First compute the time amplitude function from the data.
+C.................Renormalize each TAF by dividing by SQRT of its eigenvalue.
+
+c...........................loop over time
+
+c        nout = NX
+	DO 350 J=1,NT
+	npr = nt/ 10 
+        if (nt .gt. 100) npr = (npr/ 10) * 10     
+
+c............find out if any gaps exist at this time.
+c............use ic to count them and pct(nx) to keep track of where they are.
+	ic=0
+	do 400 is=1,nx
+	if (data(is,j).GT.bad_flag_dat) then
+		ic=ic+1
+		pct(is)=0.
+	else
+		pct(is)=1.
+	endif
+400	continue
+
+c..............if no blanks at this time, compute TAF as usual.
+	if (ic.eq.nx) then
+c................................loop over EOF numbers, then over space.
+		DO 360 IE=1,NX
+
+		DO 370 IS=1,NX
+370		TAF(IE,J) = TAF(IE,J) + 
+     .			    VEC(IS,IE)*DATA(IS,J)
+360		CONTINUE
+	elseif (ic.eq.0) then
+c..............If there are NO data values at time j, then blank the TAF.
+		do 450 ie=1,nx
+450		taf(ie,j)=bad_flag_result
+	else
+c.............If there are some blanks, then use Chelton's estimate Beta_i(t).
+c.............Now use c(nx,nx) as dummy to keep Chelton's Gamma_ji.
+c.............Fill c(i,j), where i and j are both EOF #s. 
+c.............Sum over MISSING data points only.
+
+		do 410 i1=1,NX
+		do 410 i2=1,nx
+		   c(i1,i2)=0.
+		   do 415 ix=1,nx
+415		   if (pct(ix).eq.1)
+     .			c(i1,i2)=c(i1,i2)+vec(ix,i1)*vec(ix,i2)
+410		continue
+
+c..................Loop over EOF numbers.
+		do 420 ie=1,NX
+
+c......................Find Beta_i(t) from Gamma_ij.
+c......................Also need the sum of Lambda_j*Gamma_ji**2 over all j.ne.i
+
+c.......................loop 430 sums over space.
+		   sumljgji=0.
+                   do 430 i2=1,nx
+430                if (i2.ne.ie) sumljgji=sumljgji+val(i2)*c(i2,ie)**2
+c
+c  Billy said to replace the loop below with the one above. This is the
+c    problem that Mick spotted. 
+c
+c		   do 430 i2=1,nx
+c		   if (i2.eq.ie) GOTO 431
+c 430		   sumljgji=sumljgji+val(i2)*c(i2,ie)**2
+c
+431		   continue
+
+c.....................find beta.
+		   beta = ( (1.-c(ie,ie)) * val(ie) ) / 
+     .			 ( val(ie) * (1.-c(ie,ie))**2 + sumljgji )
+
+c...................Now find TAF. Summation in space over existing points only.
+		   do 440 is=1,nx
+440			if (pct(is).eq.0.) taf(ie,j) = taf(ie,j) + 
+     .			   	beta * vec(is,ie) * data(is,j)
+
+420		continue
+
+
+	endif
+		
+350	CONTINUE
+
+C-------------------------------------------------------------------------
+C.................Renormalize each EOF by the SQRT of its eigenvalue.
+c.................loop over EOF numbers, then over space.
+
+	DO 300 IE=1,NX
+	do 315 j=1,nt
+
+315	if (taf(ie,j) .GT. bad_flag_dat) taf(ie,j)=taf(ie,j)/sqrt(val(ie))
+	DO 316 IS=1,NX
+316	VEC(IS,IE) = VEC(IS,IE)*SQRT(VAL(IE))
+300	CONTINUE
+C----------------------------------------------------------------------
+C.................Find the percentage of total variance accounted for by
+C.................each eigenvector.
+c.................Place this at the end to be able to use pct as dummy
+c.................for counting missing data in TAF calculation.
+	TVAR=0.0
+	DO 220 I=1,NX
+220	TVAR=TVAR+VAL(I)
+	DO 221 I=1,NX
+221	PCT(I)=100.*ABS(VAL(I)/TVAR)
+C------------------------------------------------------------------------
+	RETURN
+	END
+
+C************************************************************************
+      SUBROUTINE QRSYM (A,N,E,X, eofwork)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER N
+      REAL A(N,*),E(*),X(N,*)
+
+* No need to declare Z,T,E,F dimensions since they are not used
+* and Fortran arrays are column major
+      REAL eofwork(wrk9lox:wrk9hix, wrk9loy:wrk9hiy)
+
+*  
+* 5/99 ACM  Use a work array eofwork rather than explicitly dimensioned
+*           arrays ALPHA, BETA, BB, and P (originally declared in HOUSEH)
+c      DIMENSION ALPHA(4000),BETA(4000),BB(4000)
+
+      INTEGER nb
+      REAL rnorm, eps
+      REAL macheps
+
+      nb=n
+
+* Set macheps once and pass into QRSTD where its used as ETA
+* and into TRIDIN.
+* Assign 2**(-48) to a variable so it is the correct size REAL
+* (should this be different under double-precision?)
+      macheps = 2.**(-48)
+
+      CALL HOUSEH(A,N,eofwork(1,1),eofwork(1,2),NB,
+     .            eofwork(1,4))
+
+      CALL QRSTD (eofwork(1,1),eofwork(1,2),N,E,
+     .            eofwork(1,3),RNORM,MACHEPS, EPS)
+
+      CALL TRIDIN(eofwork(1,1),eofwork(1,2),N,E,RNORM,
+     .            N,macheps,X,NB,eofwork(1,5),eofwork(1,6),
+     .            eofwork(1,7),eofwork(1,8),eofwork(1,9),
+     .            eofwork(1,10) )
+
+      CALL BACKS(eofwork(1,2),A,N,X,N,EPS,NB)
+
+      RETURN
+      END
+
+
+C**********************************************************************
+
+      SUBROUTINE HOUSEH (G,N,A,B,NB, p)
+
+c  7/2002 ACM  Make the sums etc for calculating the matrix inverse
+c              double precision.
+
+      INTEGER NB
+      REAL G(NB,*),A(*),B(*)
+
+c      DIMENSION P(2000)
+      REAL P(*)
+
+      INTEGER n, n2, k, k1, i, j, i1
+      REAL*8 sum, sigma, absb, alpha, beta, gamma, t
+
+      N2=N-2
+      IF(N2)45,44,2
+    2 DO 43 K=1,N2
+      A(K)=G(K,K)
+      SUM=0
+      K1=K+1
+      DO 8 I=K1,N
+    8 SUM=SUM+G(I,K)**2
+      SIGMA=SUM
+      ABSB=SQRT(SIGMA)
+      ALPHA=G(K+1,K)
+      BETA=-ABSB
+      IF(ALPHA)15,16,16
+   15 BETA=ABSB
+   16 B(K)=BETA
+      IF(SIGMA)18,43,18
+   18 GAMMA=1/(SIGMA-ALPHA*BETA)
+      G(K+1,K)=ALPHA-BETA		! change C so now not Mean Prod Matrix
+      DO 27 I=K1,N
+      SUM=0
+      DO 23 J=K1,I
+   23 SUM=SUM+G(I,J)*G(J,K)
+      IF(I.EQ.N)GO TO 27
+      I1=I+1
+      DO 26 J=I1,N
+   26 SUM=SUM+G(J,I)*G(J,K)
+   27 P(I)=GAMMA*SUM
+      SUM=0
+      DO 30 I=K1,N
+   30 SUM=SUM+G(I,K)*P(I)
+      T=0.5*GAMMA*SUM
+      DO 32 I=K1,N
+   32 P(I)=P(I)-T*G(I,K)
+      DO 35 I=K1,N
+      DO 35 J=K1,I
+   35 G(I,J)=G(I,J)-G(I,K)*P(J)-P(I)*G(J,K)
+   43 CONTINUE
+   44 A(N-1)=G(N-1,N-1)
+      B(N-1)=G(N,N-1)
+   45 A(N)=G(N,N)
+      B(N)=0.0
+      RETURN
+      END
+
+C************************************************************************
+
+      SUBROUTINE QRSTD (ALPHA,BETA,N,E,BB,RNORM,ETA,EPS)
+      REAL ALPHA(*),BETA(*),E(*),BB(*)
+
+      INTEGER n, i, k, m, n1, i1, j
+      REAL eta, delta, t, r, w, c, s, shift, g, p, ek1, rnorm, eps
+
+
+C W.KAHAN AND J.VARAH, TWO WORKING ALGORITHMS FOR THE EIGENVALUES OF A
+C SYMMETRIC TRIDIAGONAL MATRIX. TECHNICAL REPORT NO. CS43, AUGUST 11,
+C 1966. COMP.SC.DEPT. STANFORD UNIVERSITY.
+
+      DO 2 I=1,N
+      E(I)=ALPHA(I)
+      BB(I+1)=BETA(I)**2
+    2 continue
+      BB(1)=0.0
+      BB(N+1)=0.0
+C INFINITY NORM OF TRIDIAGONAL MATRIX
+      RNORM=0.0
+      DO 5 I=1,N
+    5 RNORM=AMAX1(RNORM,SQRT(BB(I))+ABS(E(I))+SQRT(BB(I+1)))
+C ETA = RELATIVE MACHINE PRECISION
+      DELTA=ETA*RNORM
+      EPS=DELTA**2
+      IF (EPS.EQ.0) RETURN
+      K=N
+    6 M=K
+      IF(M.LE.0)GO TO 56
+    8 K=K-1
+      IF(BB(K+1).GE.EPS)GO TO 8
+C NEXT
+      IF(K.NE.M-1)GO TO 13
+      BB(K+1)=0.0
+      GO TO 6
+C TWOBY2
+   13 T=E(M)-E(M-1)
+      R=BB(M)
+      IF(K.GE.M-2)GO TO 22
+      W=BB(M-1)
+      C=T**2
+      S=R/(C+W)
+      IF(S*(W+S*C).GE.EPS)GO TO 22
+      M=M-1
+      BB(M+1)=0.0
+      GO TO 13
+C END NEGLIGIBLE BB
+   22 IF(ABS(T).GE.DELTA)GO TO 25
+      S=SQRT(R)
+      GO TO 28
+   25 W=2.0/T
+      S=W*R/(SQRT(W**2*R+1.0)+1.0)
+   28 IF(K.NE.M-2)GO TO 33
+      E(M)=E(M)+S
+      E(M-1)=E(M-1)-S
+      BB(K+1)=0.0
+      GO TO 6
+C DO A QR STEP ON ROWS AND COLUMNS K+1 THROUGH M
+   33 SHIFT=E(M)+S
+      IF(ABS(T).GE.DELTA)GO TO 37
+      W=E(M-1)-S
+      IF(ABS(W).LT.ABS(SHIFT))SHIFT=W
+   37 S=0.0
+      G=E(K+1)-SHIFT
+      C=1.0
+      GO TO 45
+C LOOP
+   40 C=P/T
+      S=W/T
+      W=G
+      EK1=E(K+1)
+      G=C*(EK1-SHIFT)-S*W
+      E(K)=(W-G)+EK1
+C ENTRY
+   45 IF(ABS(G).GE.DELTA)GO TO 48
+      IF(G.GE.0.0)GO TO 47
+      G=G-C*DELTA
+      GO TO 48
+   47 G=G+C*DELTA
+   48 P=G**2/C
+      K=K+1
+      W=BB(K+1)
+      T=W+P
+      BB(K)=S*T
+   50 IF(K.LT.M)GO TO 40
+      E(K)=G+SHIFT
+      GO TO 6
+C SORT
+   56 IF(N.EQ.1)RETURN
+      N1=N-1
+      DO 70 I=1,N1
+      K=I
+      T=E(I)
+      I1=I+1
+      DO 62 J=I1,N
+      IF(E(J).LE.T)GO TO 62
+      T=E(J)
+      K=J
+   62 CONTINUE
+      IF(I.EQ.K)GO TO 70
+      E(K)=E(I)
+      E(I)=T
+   70 CONTINUE
+      RETURN
+      END
+
+C*************************************************************************
+
+      SUBROUTINE TRIDIN (C,B,N,W,NORM,M1,MACHEPS,Z,NB,M,P,Q,R,INT,X)
+
+      INTEGER nb, nminus1, ii
+      REAL C(*),B(*),W(*),Z(NB,*),
+     .     M(*),P(*),Q(*),R(*),INT(*),X(*)
+
+C J.H.WILKINSON, CALCULATION OF THE EIGENVECTORS OF A SYMMETRIC
+C TRIDIAGONAL MATRIX BY INVERSE ITERATION. NUMERISCHE MATHEMATIK 4,
+C 368-376 (1962)
+
+* 9/05 ACM  Use a work array eofwork rather than explicitly dimensioned
+*           arrays M, P, Q, R, INT, and X
+
+c      REAL M(4000),P(4000),Q(4000),R(4000),INT(4000),X(4002)
+
+      INTEGER N,M1
+      REAL NORM,MACHEPS
+
+      INTEGER I,J
+c      REAL BI,BI1,Z1,LAMBDA,U,S,V,H,EPS,ETA
+      REAL BI,BI1,LAMBDA,U,V,H,EPS,ETA,BIG,BIGGER
+
+
+* In single-precision these were 1.e10 and 1.e20
+* Determined by trial and error.
+	
+#ifdef double_p
+      big = 1.E20
+      bigger = 1.E30
+#else
+      big = 1.E10
+      bigger = 1.E20
+#endif
+
+      IF (N-1)10,20,30
+   20 Z(1,1)=1.
+   10 RETURN
+   30 CONTINUE
+      LAMBDA=NORM
+      EPS=MACHEPS*NORM
+      DO 90 J=1,M1
+      LAMBDA=LAMBDA-EPS
+      IF(W(J).LT.LAMBDA)LAMBDA=W(J)
+      U=C(1)-LAMBDA
+      V=B(1)
+      IF(V.EQ.0)V=EPS
+      NMINUS1=N-1
+      DO 60 I=1,NMINUS1
+      BI=B(I)
+      IF(BI.EQ.0)BI=EPS
+      BI1=B(I+1)
+      IF(BI1.EQ.0)BI1=EPS
+      IF(ABS(BI).LT.ABS(U))GO TO 50
+      M(I+1)=U/BI
+      IF((M(I+1).EQ.0).AND.(BI.LE.EPS))M(I+1)=1
+      P(I)=BI
+      Q(I)=C(I+1)-LAMBDA
+      R(I)=BI1
+      U=V-M(I+1)*Q(I)
+      V=-M(I+1)*R(I)
+      INT(I+1)=+1
+      GO TO 60
+   50 M(I+1)=BI/U
+      P(I)=U
+      Q(I)=V
+       R(I)=0
+      U=C(I+1)-LAMBDA-M(I+1)*V
+      V=BI1
+      INT(I+1)=-1
+   60 CONTINUE
+      P(N)=U
+      Q(N)=0
+      R(N)=0
+      X(N+1)=0
+      X(N+2)=0
+      H=0
+      ETA=1.0/N
+      DO 67 II=1,N
+      I=N-II+1
+      U=ETA-Q(I)*X(I+1)-R(I)*X(I+2)
+      IF(P(I).NE.0)GO TO 65
+      X(I)=U/EPS
+      GO TO 66
+   65 X(I)=U/P(I)
+   66 H=H+ABS(X(I))
+   67 CONTINUE
+      DO 68 I=1,N
+   68 X(I)=X(I)/H
+      DO 75 I=2,N
+      IF(INT(I).LE.0)GO TO 70
+      U=X(I-1)
+      X(I-1)=X(I)
+      X(I)=U-M(I)*X(I-1)
+      GO TO 75
+   70 X(I)=X(I)-M(I)*X(I-1)
+   75 CONTINUE
+      H=0
+      DO 82 II=1,N
+      I=N-II+1
+      U=X(I)-Q(I)*X(I+1)-R(I)*X(I+2)
+      IF(P(I).NE.0)GO TO 80
+      X(I)=U/EPS
+      GO TO 81
+   80 X(I)=U/P(I)
+C   81 H=H+X(I)**2
+ 81   IF (X(I).GT.BIG) THEN
+        H=BIGGER
+      ELSE
+        H=H+X(I)**2
+      ENDIF
+   82 CONTINUE
+      H=SQRT(H)
+C STORE VECTORS AS COLUMNS
+      DO 85 I=1,N
+   85 Z(I,J)=X(I)/H
+   90 CONTINUE
+      RETURN
+      END
+
+C**********************************************************************
+
+      SUBROUTINE BACKS (BETA,A,N,X,M1,EPS,NB)
+      INTEGER n, nb, m1 
+      REAL BETA(*), A(NB,*), X(NB,*), EPS
+
+      INTEGER j, kk, k, k1, i
+      REAL s
+
+
+C BACKTRANSFORMATION
+
+   73 IF (N.LE.2)RETURN
+      DO 90 J=1,M1
+      DO 85 KK=3,N
+      K=N-KK+1
+   76 IF (ABS(BETA(K)).LE.EPS) GO TO 85
+      S=0.0
+      K1=K+1
+      DO 75 I=K1,N
+   75 S=S+A(I,K)*X(I,J)
+      S=S/(BETA(K)*A(K1,K))
+      DO 80 I=K1,N
+   80 X(I,J)=X(I,J)+S*A(I,K)
+   85 CONTINUE
+   90 CONTINUE
+
+      RETURN
+      END
+
+************************************************************************
+
+      SUBROUTINE count_neof (arg_1, neof, ok, nx, ny, nt, k1, m1, n1,
+     .                       arg_lo_ss, arg_hi_ss, arg_incr, mx, 
+     .                       flag, frac_timeser, err_msg, ier)
+
+*  Find number of time series with valid data.  This will be neof.
+*  Set array OK to mark which (x,y) have some good data.
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+* arguments
+      INTEGER neof, nx, ny, nt, k1, m1, n1, mx, ier
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL ok(nx,ny)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+      REAL flag, frac_timeser
+      CHARACTER*(*) err_msg
+
+* local variables
+      INTEGER i, j, i1, j1, l1
+      REAL a_nt
+
+*  Set array ok = 1 if frac_timeser fraction of valid data exists at the point.
+
+      a_nt = float(nt)
+
+      neof = 0
+      j1 = arg_lo_ss(Y_AXIS,ARG1)
+      DO 30 j = 1, ny
+         i1 = arg_lo_ss(X_AXIS,ARG1)
+         DO 20 i = 1, nx
+
+            ok(i,j) = 0.
+            DO 10 l1 = arg_lo_ss(T_AXIS,ARG1), arg_hi_ss(T_AXIS,ARG1)
+               IF (arg_1(i1,j1,k1,l1,m1,n1) .ne. flag) then
+                  ok(i,j) = ok(i,j) + 1.
+               endif
+  10        CONTINUE
+            ok(i,j) = ok(i,j) / a_nt
+            IF (ok(i,j) .GE. frac_timeser) neof = neof + 1 
+
+            i1 = i1 + arg_incr(X_AXIS,ARG1) 
+  20     CONTINUE
+         j1 = j1 + arg_incr(Y_AXIS,ARG1) 
+  30  CONTINUE
+
+      ier = 0
+      IF (neof .gt. mx) then
+        WRITE(err_msg,*) 'Increase parameter mx in eof.F ',
+     .                   'Set mx at least', neof
+        ier = 1
+        RETURN
+      ENDIF
+
+      RETURN
+      END
+
+************************************************************************
+
+      SUBROUTINE pack_ef (arg_1, ddat_1d, isave_jsave, neof,  
+     .                    ok, frac_timeser, nx, ny, nt, k1, m1, n1,
+     .                    arg_lo_ss, arg_hi_ss, arg_incr)
+
+*  put arg_1(x,y,t) into one list ddat_1d(neof,nt)
+
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER neof, nx, ny, nt, k1, m1, n1
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, mem1loz:mem1hiz, 
+     .           mem1lot:mem1hit, mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL ddat_1d(neof,nt)
+      REAL isave_jsave(wrk7lox:wrk7hix, wrk7loy:wrk7hiy,
+     .                 wrk7loz:wrk7hiz, wrk7lot:wrk7hit,
+     .                 wrk7loe:wrk7hie, wrk7lof:wrk7hif)
+      REAL ok(nx,ny)
+      REAL frac_timeser
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+      INTEGER i, j, l, i1, j1, l1
+      INTEGER ipack
+
+      ipack = 0
+
+      j1 = arg_lo_ss(Y_AXIS,ARG1)
+      DO 130 j = 1, ny
+         i1 = arg_lo_ss(X_AXIS,ARG1)
+         DO 120 i = 1, nx
+            IF (ok(i,j) .GE. frac_timeser) THEN
+               ipack = ipack + 1
+ 
+               isave_jsave(ipack,1,1,1,1,1) = i
+               isave_jsave(ipack,2,1,1,1,1) = j
+ 
+               l1 = arg_lo_ss(T_AXIS,ARG1)
+               DO 110 l = 1, nt
+                  ddat_1d(ipack, l) = arg_1(i1,j1,k1,l1,m1,n1)
+                  l1 = l1 + arg_incr(T_AXIS,ARG1) 
+ 110           CONTINUE
+
+             ENDIF
+             i1 = i1 + arg_incr(X_AXIS,ARG1) 
+ 120     CONTINUE
+         j1 = j1 + arg_incr(Y_AXIS,ARG1) 
+ 130  CONTINUE
+
+      RETURN
+      END
diff --git a/external_functions/sort/Makefile b/external_functions/sort/Makefile
index 53e5ea3..5b453a9 100644
--- a/external_functions/sort/Makefile
+++ b/external_functions/sort/Makefile
@@ -39,7 +39,7 @@ include ../ef_utility/platform_specific.mk.$(BUILDTYPE)
 # Targets
 #
 
-all:    sorti_str.so bin_index_wt.so samplei_multi.so samplej_multi.so samplek_multi.so samplel_multi.so is_element_of_str.so samplexyt_nrst.so
+all:     
 #all:    compressi_str.so string_to_id.so 
 
 debug:
diff --git a/external_functions/stringfcns/efstrings.F b/external_functions/stringfcns/efstrings.F
index cc2e176..4ac8d51 100644
--- a/external_functions/stringfcns/efstrings.F
+++ b/external_functions/stringfcns/efstrings.F
@@ -113,10 +113,18 @@
 
       INTEGER id
 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
       REAL bad_flag(EF_MAX_ARGS), bad_flag_result
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .     mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL result(2,memreslox:memreshix, memresloy:memreshiy, 
+      REAL result(strdf,memreslox:memreshix, memresloy:memreshiy, 
      .     memresloz:memreshiz, memreslot:memreshit)
       REAL*8 tax(wrk1lox:wrk1hix, wrk1loy:wrk1hiy,
      .               wrk1loz:wrk1hiz, wrk1lot:wrk1hit/2)
diff --git a/external_functions/stringfcns/length_of_strings.F b/external_functions/stringfcns/length_of_strings.F
index 7433b88..3030eec 100644
--- a/external_functions/stringfcns/length_of_strings.F
+++ b/external_functions/stringfcns/length_of_strings.F
@@ -69,8 +69,16 @@
 
       INTEGER id
 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
       REAL bad_flag(EF_MAX_ARGS), bad_flag_result
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .     mem1loz:mem1hiz, mem1lot:mem1hit)
       REAL result(memreslox:memreshix, memresloy:memreshiy, 
      .     memresloz:memreshiz, memreslot:memreshit)
diff --git a/external_functions/stringfcns/maxstrlen.F b/external_functions/stringfcns/maxstrlen.F
index 6daa303..17d8e02 100644
--- a/external_functions/stringfcns/maxstrlen.F
+++ b/external_functions/stringfcns/maxstrlen.F
@@ -70,7 +70,15 @@
 
       INTEGER id
 
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .     mem1loz:mem1hiz, mem1lot:mem1hit)
       REAL result(memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
diff --git a/external_functions/stringfcns/pass_thru_string.F b/external_functions/stringfcns/pass_thru_string.F
index 0e85d34..43d6041 100644
--- a/external_functions/stringfcns/pass_thru_string.F
+++ b/external_functions/stringfcns/pass_thru_string.F
@@ -91,10 +91,17 @@
 
       REAL bad_flag(1:EF_MAX_ARGS), bad_flag_result
 
-! string arg and result need to be twice the length.
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .           mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL result(2,memreslox:memreshix, memresloy:memreshiy,
+      REAL result(strdf,memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
 
 * After initialization, the 'res_' arrays contain indexing information 
diff --git a/external_functions/stringfcns/pick_a_string.F b/external_functions/stringfcns/pick_a_string.F
index 6fee156..ee12eab 100644
--- a/external_functions/stringfcns/pick_a_string.F
+++ b/external_functions/stringfcns/pick_a_string.F
@@ -130,13 +130,20 @@
 
       REAL bad_flag(1:EF_MAX_ARGS), bad_flag_result
 
-*  ! string arg and result need to be twice the length.
 
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .           mem1loz:mem1hiz, mem1lot:mem1hit)
       REAL arg_2(mem2lox:mem1hix, mem2loy:mem1hiy, 
      .           mem2loz:mem1hiz, mem2lot:mem1hit)
-      REAL result(2,memreslox:memreshix, memresloy:memreshiy,
+      REAL result(strdf,memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
 
 * After initialization, the 'res_' arrays contain indexing information 
diff --git a/external_functions/stringfcns/str_missing.F b/external_functions/stringfcns/str_missing.F
index fbbfe97..785d831 100644
--- a/external_functions/stringfcns/str_missing.F
+++ b/external_functions/stringfcns/str_missing.F
@@ -112,13 +112,20 @@
 
       REAL bad_flag(1:EF_MAX_ARGS), bad_flag_result
 
-*  ! string arg and result need to be twice the length.
+
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
 
       REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, 
      .           mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL arg_2(2,mem2lox:mem2hix, mem2loy:mem2hiy, 
+      REAL arg_2(strdf,mem2lox:mem2hix, mem2loy:mem2hiy, 
      .           mem2loz:mem2hiz, mem2lot:mem2hit)
-      REAL arg_3(2,mem3lox:mem3hix, mem3loy:mem3hiy, 
+      REAL arg_3(strdf,mem3lox:mem3hix, mem3loy:mem3hiy, 
      .     mem3loz:mem3hiz, mem3lot:mem3hit)
       REAL result(memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
diff --git a/external_functions/stringfcns/string_cat3.F b/external_functions/stringfcns/string_cat3.F
index 81d6d9c..9017104 100644
--- a/external_functions/stringfcns/string_cat3.F
+++ b/external_functions/stringfcns/string_cat3.F
@@ -4,6 +4,7 @@
 * Ansley Manke
 * May 2006
 *
+*
 * Returns concatenation of 3 strings
 *
 * In this subroutine we provide information about
@@ -81,14 +82,21 @@
 
       INTEGER id
 
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
       REAL bad_flag(EF_MAX_ARGS), bad_flag_result
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .     mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL arg_2(2,mem2lox:mem2hix, mem2loy:mem2hiy, 
+      REAL arg_2(strdf,mem2lox:mem2hix, mem2loy:mem2hiy, 
      .     mem2loz:mem2hiz, mem2lot:mem2hit)
-      REAL arg_3(2,mem3lox:mem3hix, mem3loy:mem3hiy, 
+      REAL arg_3(strdf,mem3lox:mem3hix, mem3loy:mem3hiy, 
      .     mem3loz:mem3hiz, mem3lot:mem3hit)
-      REAL result(2,memreslox:memreshix, memresloy:memreshiy, 
+      REAL result(strdf,memreslox:memreshix, memresloy:memreshiy, 
      .     memresloz:memreshiz, memreslot:memreshit)
 
 * After initialization, the 'res_' arrays contain indexing information 
diff --git a/external_functions/stringfcns/string_len_sum.F b/external_functions/stringfcns/string_len_sum.F
index 3ab5605..379bde9 100644
--- a/external_functions/stringfcns/string_len_sum.F
+++ b/external_functions/stringfcns/string_len_sum.F
@@ -100,10 +100,17 @@
       REAL bad_flag(1:EF_MAX_ARGS), bad_flag_result
 
 *  ! string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
 
-      REAL arg_1(2,mem1lox:mem1hix, mem1loy:mem1hiy, 
+
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .           mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL arg_2(2,mem2lox:mem2hix, mem2loy:mem2hiy, 
+      REAL arg_2(strdf,mem2lox:mem2hix, mem2loy:mem2hiy, 
      .           mem2loz:mem2hiz, mem2lot:mem2hit)
       REAL result(memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
diff --git a/external_functions/stringfcns/strings_as_args.F b/external_functions/stringfcns/strings_as_args.F
index 2c29641..82abef0 100644
--- a/external_functions/stringfcns/strings_as_args.F
+++ b/external_functions/stringfcns/strings_as_args.F
@@ -108,15 +108,21 @@
 
       REAL bad_flag(1:EF_MAX_ARGS), bad_flag_result
 
-*  ! string arg and result need to be twice the length.
-
-      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy, 
+* Single precision Ferret: string arg and result need to be twice the length.
+      INTEGER strdf
+#ifdef double_p
+      PARAMETER (strdf = 1)
+#else
+      PARAMETER (strdf = 2)
+#endif
+
+      REAL arg_1(strdf,mem1lox:mem1hix, mem1loy:mem1hiy, 
      .           mem1loz:mem1hiz, mem1lot:mem1hit)
-      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy, 
+      REAL arg_2(strdf,mem2lox:mem2hix, mem2loy:mem2hiy, 
      .           mem2loz:mem2hiz, mem2lot:mem2hit)
       REAL arg_3(mem3lox:mem3hix, mem3loy:mem3hiy, 
      .           mem3loz:mem3hiz, mem3lot:mem3hit)
-      REAL result(memreslox:memreshix, memresloy:memreshiy,
+      REAL result(strdf,memreslox:memreshix, memresloy:memreshiy,
      .            memresloz:memreshiz, memreslot:memreshit)
 
 * After initialization, the 'res_' arrays contain indexing information 
@@ -181,7 +187,7 @@
                      slen = slen1 + slen2
                   ENDIF
 
-                  CALL EF_PUT_STRING (textout, slen, result(i,j,k,l))
+                  CALL EF_PUT_STRING (textout, slen, result(1,i,j,k,l))
 
                   l1 = l1 + arg_incr(T_AXIS,ARG1)
                   l2 = l2 + arg_incr(T_AXIS,ARG2)
diff --git a/fer/ccr/EF_InternalUtil.c b/fer/ccr/EF_InternalUtil.c
index 6b47588..56db464 100644
--- a/fer/ccr/EF_InternalUtil.c
+++ b/fer/ccr/EF_InternalUtil.c
@@ -89,6 +89,8 @@
 * *acm*  1/12      - Ferret 6.8 ifdef double_p for double-precision ferret, see the
 *					 definition of macro DFTYPE in ferret.h
 *      *kms*  3/12 Add E and F dimensions 
+*      *acm*  6/14 New separate function for DSG files 
+*      *acm*  9/14 Make DATE1900 accept an array of date strings, returning an array of coordinates
 */
 
 
@@ -645,7 +647,6 @@ void FORTRAN(rect_to_curv_compute)(int *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *
                                        DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *);
 
 void FORTRAN(date1900_init)(int *);
-void FORTRAN(date1900_result_limits)(int *);
 void FORTRAN(date1900_compute)(int *, DFTYPE *, DFTYPE *);
 
 void FORTRAN(days1900toymdhms_init)(int *);
@@ -693,6 +694,11 @@ void FORTRAN(expndi_id_by_z_counts_init)(int *);
 void FORTRAN(expndi_id_by_z_counts_result_limits)(int *);
 void FORTRAN(expndi_id_by_z_counts_compute)(int *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *);
 
+void FORTRAN(expndi_by_m_counts_init)(int *);
+void FORTRAN(expndi_by_m_counts_result_limits)(int *);
+void FORTRAN(expndi_by_m_counts_custom_axes)(int *);
+void FORTRAN(expndi_by_m_counts_compute)(int *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *);
+
 void FORTRAN(fc_isubset_init)(int *);
 void FORTRAN(fc_isubset_result_limits)(int *);
 void FORTRAN(fc_isubset_custom_axes)(int *);
@@ -1015,6 +1021,10 @@ void FORTRAN(write_webrow_compute)(int *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *
 void FORTRAN(str_mask_init)(int *);
 void FORTRAN(str_mask_compute)(int *, DFTYPE *, DFTYPE *);
 
+void FORTRAN(separate_init)(int *);
+void FORTRAN(separate_result_limits)(int *);
+void FORTRAN(separate_compute)(int *, DFTYPE *, DFTYPE *, DFTYPE *, DFTYPE *);
+
 /*
  *  End of declarations for internally linked external functions
  *  ------------------------------------ */
@@ -1056,7 +1066,7 @@ int FORTRAN(efcn_scan)( int *gfcn_num_internal )
  *  int_dlsym.pl.  Check that N_INTEF is correctly defined below.
  */
 
-#define N_INTEF 162
+#define N_INTEF 164
 
 struct {
   char funcname[EF_MAX_NAME_LENGTH];
@@ -1222,8 +1232,10 @@ struct {
    strcpy(I_EFnames[157].funcname, "fc_isubset");
    strcpy(I_EFnames[158].funcname, "expndi_by_z_counts");
    strcpy(I_EFnames[159].funcname, "expndi_id_by_z_counts");
-   strcpy(I_EFnames[160].funcname, "str_mask");
-   strcpy(I_EFnames[161].funcname, "samplexyt_nrst");
+   strcpy(I_EFnames[160].funcname, "expndi_by_m_counts");
+   strcpy(I_EFnames[161].funcname, "str_mask");
+   strcpy(I_EFnames[162].funcname, "samplexyt_nrst");
+   strcpy(I_EFnames[163].funcname, "separate");
 
 /*    
  *  ------------------------------------ 
@@ -1255,20 +1267,25 @@ struct {
   sprintf(path, "%s/ferret_ef_mem_subsc.so", path_ptr);
   ferret_ef_mem_subsc_so_ptr = dlopen(path, RTLD_LAZY | RTLD_GLOBAL);
   if ( ferret_ef_mem_subsc_so_ptr == NULL ) {
-     fprintf(stderr, "**ERROR: efcn_scan: dlopen of %s\n"
-                     "  failed -- %s\n", path, dlerror());
-     return_val = -1;
-     return return_val;
+     /*
+      * fprintf(stderr, "**ERROR: efcn_scan: dlopen of %s\n"
+      *                 "  failed -- %s\n", path, dlerror());
+      * return_val = -1;
+      * return return_val;
+      */
+     copy_ferret_ef_mem_subsc_ptr = NULL;
   }
-  copy_ferret_ef_mem_subsc_ptr = 
-          (void (*)(void)) dlsym(ferret_ef_mem_subsc_so_ptr,
-                                 "copy_ferret_ef_mem_subsc_");
-  if ( copy_ferret_ef_mem_subsc_ptr == NULL ) {
-     fprintf(stderr, "**ERROR: efcn_scan: copy_ferret_ef_mem_subsc_\n"
-                     "  not found in $FER_LIBS/ferret_ef_mem_subsc.so\n"
-                     "  -- %s\n", dlerror());
-     return_val = -1;
-     return return_val;
+  else {
+     copy_ferret_ef_mem_subsc_ptr = 
+             (void (*)(void)) dlsym(ferret_ef_mem_subsc_so_ptr,
+                                    "copy_ferret_ef_mem_subsc_");
+     if ( copy_ferret_ef_mem_subsc_ptr == NULL ) {
+        fprintf(stderr, "**ERROR: efcn_scan: copy_ferret_ef_mem_subsc_\n"
+                        "  not found in $FER_LIBS/ferret_ef_mem_subsc.so\n"
+                        "  -- %s\n", dlerror());
+        return_val = -1;
+        return return_val;
+     }
   }
 
   /*
@@ -3807,7 +3824,6 @@ else if ( !strcmp(name,"rect_to_curv_compute_") ) return (void *)FORTRAN(rect_to
 
 /* date1900.F */
 else if ( !strcmp(name,"date1900_init_") ) return (void *)FORTRAN(date1900_init);
-else if ( !strcmp(name,"date1900_result_limits_") ) return (void *)FORTRAN(date1900_result_limits);
 else if ( !strcmp(name,"date1900_compute_") ) return (void *)FORTRAN(date1900_compute);
 
 /* days1900toymdhms.F */
@@ -3867,6 +3883,12 @@ else if ( !strcmp(name,"expndi_id_by_z_counts_init_") ) return (void *)FORTRAN(e
 else if ( !strcmp(name,"expndi_id_by_z_counts_result_limits_") ) return (void *)FORTRAN(expndi_id_by_z_counts_result_limits);
 else if ( !strcmp(name,"expndi_id_by_z_counts_compute_") ) return (void *)FORTRAN(expndi_id_by_z_counts_compute);
 
+/* expndi_by_m_counts.F */
+else if ( !strcmp(name,"expndi_by_m_counts_init_") ) return (void *)FORTRAN(expndi_by_m_counts_init);
+else if ( !strcmp(name,"expndi_by_m_counts_result_limits_") ) return (void *)FORTRAN(expndi_by_m_counts_result_limits);
+else if ( !strcmp(name,"expndi_by_m_counts_custom_axes_") ) return (void *)FORTRAN(expndi_by_m_counts_custom_axes);
+else if ( !strcmp(name,"expndi_by_m_counts_compute_") ) return (void *)FORTRAN(expndi_by_m_counts_compute);
+
 /* fc_isubset.F */
 else if ( !strcmp(name,"fc_isubset_init_") ) return (void *)FORTRAN(fc_isubset_init);
 else if ( !strcmp(name,"fc_isubset_result_limits_") ) return (void *)FORTRAN(fc_isubset_result_limits);
@@ -4150,10 +4172,14 @@ else if ( !strcmp(name,"write_webrow_init_") ) return (void *)FORTRAN(write_webr
 else if ( !strcmp(name,"write_webrow_result_limits_") ) return (void *)FORTRAN(write_webrow_result_limits);
 else if ( !strcmp(name,"write_webrow_compute_") ) return (void *)FORTRAN(write_webrow_compute);
 
-
 else if ( !strcmp(name,"str_mask_init_") ) return (void *)FORTRAN(str_mask_init);
 else if ( !strcmp(name,"str_mask_compute_") ) return (void *)FORTRAN(str_mask_compute);
 
+else if ( !strcmp(name,"separate_init_") ) return (void *)FORTRAN(separate_init);
+else if ( !strcmp(name,"separate_result_limits_") ) return (void *)FORTRAN(separate_result_limits);
+else if ( !strcmp(name,"separate_compute_") ) return (void *)FORTRAN(separate_compute);
+
+
 
 return NULL;
  }
diff --git a/fer/cferbind/cairoCFerBind_createSurface.c b/fer/cferbind/cairoCFerBind_createSurface.c
index 224e1a1..497b751 100644
--- a/fer/cferbind/cairoCFerBind_createSurface.c
+++ b/fer/cferbind/cairoCFerBind_createSurface.c
@@ -118,12 +118,6 @@ grdelBool cairoCFerBind_createSurface(CFerBind *self)
             instdata->surface = NULL;
             return 0;
         }
-        /* 
-         * Set a low resolution for fallback raster images in vector drawings.
-         * We really do not want this to be used or even created.
-         */
-        if ( instdata->imageformat != CCFBIF_PNG )
-            cairo_surface_set_fallback_resolution(instdata->surface, 32.0, 32.0);
     }
 
     /* Create the Context if it does not exist */
diff --git a/fer/cferbind/cairoCFerBind_drawPolygon.c b/fer/cferbind/cairoCFerBind_drawPolygon.c
index 679a7f3..5872abb 100644
--- a/fer/cferbind/cairoCFerBind_drawPolygon.c
+++ b/fer/cferbind/cairoCFerBind_drawPolygon.c
@@ -139,8 +139,8 @@ grdelBool cairoCFerBind_drawPolygon(CFerBind *self, double ptsx[], double ptsy[]
         /* Fill the rectangle, but preserve the path for stroking */
         cairo_fill_preserve(instdata->context);
 
-        /* Stroke the path with a solid cosmetic line */
-        cairo_set_line_width(instdata->context, unitfactor);
+        /* Stroke the path with a solid cosmetic (one pixel width) line */
+        cairo_set_line_width(instdata->context, 1.0 * unitfactor);
         cairo_set_dash(instdata->context, NULL, 0, 0.0);
         cairo_set_line_cap(instdata->context, CAIRO_LINE_CAP_SQUARE);
         cairo_set_line_join(instdata->context, CAIRO_LINE_JOIN_BEVEL);
@@ -187,7 +187,7 @@ grdelBool cairoCFerBind_drawPolygon(CFerBind *self, double ptsx[], double ptsy[]
                   penobj->color.greenfrac, penobj->color.bluefrac);
         /* Assign the adjusted line width */
         adjwidth = penobj->width * instdata->widthfactor;
-        /* width of zero is a cosmetic pen - make it 1 pixel wide */
+        /* width of zero is a cosmetic pen - make it one pixel wide */
         if ( adjwidth == 0.0 )
             adjwidth = 1.0;
         adjwidth *= unitfactor;
diff --git a/fer/cferbind/cairoCFerBind_drawRectangle.c b/fer/cferbind/cairoCFerBind_drawRectangle.c
index 21738e1..851202c 100644
--- a/fer/cferbind/cairoCFerBind_drawRectangle.c
+++ b/fer/cferbind/cairoCFerBind_drawRectangle.c
@@ -132,8 +132,8 @@ grdelBool cairoCFerBind_drawRectangle(CFerBind *self, double left, double bottom
         /* Fill the rectangle, but preserve the path for stroking */
         cairo_fill_preserve(instdata->context);
 
-        /* Stroke the path with a solid cosmetic line */
-        cairo_set_line_width(instdata->context, unitfactor);
+        /* Stroke the path with a solid cosmetic (one pixel width) line */
+        cairo_set_line_width(instdata->context, 1.0 * unitfactor);
         cairo_set_dash(instdata->context, NULL, 0, 0.0);
         cairo_set_line_cap(instdata->context, CAIRO_LINE_CAP_SQUARE);
         cairo_set_line_join(instdata->context, CAIRO_LINE_JOIN_BEVEL);
@@ -180,7 +180,7 @@ grdelBool cairoCFerBind_drawRectangle(CFerBind *self, double left, double bottom
                   penobj->color.greenfrac, penobj->color.bluefrac);
         /* Assign the adjusted line width */
         adjwidth = penobj->width * instdata->widthfactor;
-        /* width of zero is a cosmetic pen - make it 1 pixel wide */
+        /* width of zero is a cosmetic pen - make it one pixel wide */
         if ( adjwidth == 0.0 )
             adjwidth = 1.0;
         adjwidth *= unitfactor;
diff --git a/fer/cferbind/cairoCFerBind_saveWindow.c b/fer/cferbind/cairoCFerBind_saveWindow.c
index 4c1ab16..7257cd9 100644
--- a/fer/cferbind/cairoCFerBind_saveWindow.c
+++ b/fer/cferbind/cairoCFerBind_saveWindow.c
@@ -221,7 +221,7 @@ grdelBool cairoCFerBind_saveWindow(CFerBind *self, const char *filename,
             allannos[j] = '\n';
         }
         /* Remove the last newline */
-	allannos[j-1] = '\0';
+        allannos[j-1] = '\0';
         /* padding and pen width in points */
         padding = 12.0;
         penwidth = 2.0;
@@ -254,8 +254,8 @@ grdelBool cairoCFerBind_saveWindow(CFerBind *self, const char *filename,
             return 0;
         }
         /* Create the Pango layout for the annotations */
-	annolayout = pango_cairo_create_layout(annocontext);
-	pango_layout_set_width(annolayout, (int) (PANGO_SCALE * annowidth + 0.5));
+        annolayout = pango_cairo_create_layout(annocontext);
+        pango_layout_set_width(annolayout, (int) (PANGO_SCALE * annowidth + 0.5));
         pango_layout_set_wrap(annolayout, PANGO_WRAP_WORD_CHAR);
         pango_layout_set_markup(annolayout, allannos, j-1);
         /* Apply the annotations to this cairo surface */
@@ -376,14 +376,6 @@ grdelBool cairoCFerBind_saveWindow(CFerBind *self, const char *filename,
         return 0;
     }
 
-    /* 
-     * Set a low resolution for fallback raster images in vector drawings.
-     * We really do not want this to be used or even created.
-     */
-    if ( strcmp(fmtext, "PNG") != 0 ) {
-        cairo_surface_set_fallback_resolution(savesurface, 32.0, 32.0);
-    }
-
     /* Create a temporary context for this temporary surface */
     savecontext = cairo_create(savesurface);
     if ( cairo_status(savecontext) != CAIRO_STATUS_SUCCESS ) {
@@ -401,8 +393,6 @@ grdelBool cairoCFerBind_saveWindow(CFerBind *self, const char *filename,
          */
         scalefactor *= CCFB_POINTS_PER_PIXEL;
     }
-    /* Set the scale on the destination so the source will just fit. */
-    cairo_scale(savecontext, scalefactor, scalefactor);
 
     /*
      * If landscape PostScript, translate and rotate the coordinate system
@@ -433,6 +423,9 @@ grdelBool cairoCFerBind_saveWindow(CFerBind *self, const char *filename,
         }
     }
 
+    /* Set the scale on the destination so the source will just fit. */
+    cairo_scale(savecontext, scalefactor, scalefactor);
+
     /* 
      * If not a transparent background, or if the alpha channel 
      * is not supported, fill in the background (with an opaque 
diff --git a/fer/common/EF_mem_subsc.cmn b/fer/common/EF_mem_subsc.cmn
index a260f7c..dda147a 100644
--- a/fer/common/EF_mem_subsc.cmn
+++ b/fer/common/EF_mem_subsc.cmn
@@ -18,6 +18,7 @@
 * 6/12 *kms* added EXTERNAL since this block is part of Ferret
 * 8/12 *kms* added FERRET_ prefix to common block name to identify source 
 *            (primarily for PyFerret where this becomes global under Python)
+* 10/14 *kms* removed EXTERNAL - for functions, not for common blocks
 *
 
 *************************************************************************
diff --git a/fer/common/ferret.parm b/fer/common/ferret.parm
index 6404093..18f349b 100644
--- a/fer/common/ferret.parm
+++ b/fer/common/ferret.parm
@@ -37,6 +37,7 @@
 *		  pauto_1pt_ax, pinfer_frm_aux
 *		  added patnam_sigma, patnam_curvx, patnam_curvy
 * 		  turned max_context into a variable to allow aux frames above it
+* V692 7/14 *acm* new transform @WGT, ticket 2180
 
 * this should always match maxdsets in TMAP_FORMAT:
 	INTEGER		max_gfdl_dsets
@@ -286,7 +287,9 @@
      .			trans_nrst_dist_blw,
      .			trans_nrst_indx_abv,
      .			trans_nrst_indx_blw,
-     .			trans_event_mask
+     .			trans_event_mask,
+     .			trans_avg_wgt,
+     .			trans_4d_avg_wgt
 
 	PARAMETER     ( trans_compress_code = 30,
      .			trans_no_transform = 1,
@@ -314,7 +317,9 @@
      .			trans_nrst_indx_abv = 24,
      .			trans_nrst_indx_blw = 25,
      .			trans_event_mask    = 26,
-     .			max_plane_transform = trans_event_mask )
+     .			trans_avg_wgt       = 27,
+     .			trans_4d_avg_wgt    = 28,
+     .			max_plane_transform = trans_4d_avg_wgt )
 
 	PARAMETER     ( trans_average      = trans_compress_code + 1,
      .			trans_interpolate  = trans_compress_code + 2,
diff --git a/fer/common/interp_stack.parm b/fer/common/interp_stack.parm
index 453294a..ba1014e 100644
--- a/fer/common/interp_stack.parm
+++ b/fer/common/interp_stack.parm
@@ -5,6 +5,7 @@
 * 6/01 *sh* added isact_event_mask
 * V680 5/12 *acm* 6D Ferret, changes for DEFINE DATA/AGGREGATE
 * V690 12/13 *sh* for auto-curvilinear Ferret
+* V692  7/14 *acm* added isact_avg_wgt
 
 * minimum working space provided to transformations
 	INTEGER		iswksiz
@@ -129,7 +130,9 @@
      .			isact_nrst_dist_blw,
      .			isact_nrst_indx_abv,
      .			isact_nrst_indx_blw,
-     .			isact_event_mask
+     .			isact_event_mask,
+     .			isact_avg_wgt,
+     .			isact_avg_4d_wgt
 
 	PARAMETER (
      .		isact_interp		= isact_trans_code + trans_interpolate,
@@ -173,7 +176,9 @@
      .		isact_nrst_dist_blw = isact_trans_code + trans_nrst_dist_blw,
      .		isact_nrst_indx_abv = isact_trans_code + trans_nrst_indx_abv,
      .		isact_nrst_indx_blw = isact_trans_code + trans_nrst_indx_blw,
-     .		isact_event_mask    = isact_trans_code + trans_event_mask)
+     .		isact_event_mask    = isact_trans_code + trans_event_mask,
+     .		isact_avg_wgt       = isact_trans_code + trans_avg_wgt,
+     .		isact_avg_4d_wgt    = isact_trans_code + trans_4d_avg_wgt)
 
 * classes of stack objects
 	INTEGER		isobj_uvar,
diff --git a/fer/common/plot_setup.parm b/fer/common/plot_setup.parm
index 12fe1df..43e29d6 100644
--- a/fer/common/plot_setup.parm
+++ b/fer/common/plot_setup.parm
@@ -21,8 +21,8 @@
      .              dflt_imgscale,
      .              dflt_thicken,
      .              dflt_textprom
-        PARAMETER ( dflt_xinches   = 10.50,
-     .              dflt_yinches   =  8.50,
+        PARAMETER ( dflt_xinches   = 10.20,
+     .              dflt_yinches   =  8.80,
      .              dflt_imgscale  =  0.83666,
      .              dflt_thicken   =  1.00,
      .              dflt_textprom  =  1.00 )
@@ -37,10 +37,10 @@
      .              dflt_con_labsp,
      .              dflt_con_dshln,
      .              dflt_vec_len
-        PARAMETER ( dflt_xwhitelo  =  1.375,
-     .              dflt_ywhitelo  =  1.375,
-     .              dflt_xwhitehi  =  1.375,
-     .              dflt_ywhitehi  =  1.375,
+        PARAMETER ( dflt_xwhitelo  =  1.20,
+     .              dflt_ywhitelo  =  1.40,
+     .              dflt_xwhitehi  =  1.00,
+     .              dflt_ywhitehi  =  1.40,
      .              dflt_tics_lg   =  0.25,
      .              dflt_tics_sm   =  0.125,
      .              dflt_con_labsp =  5.00,
diff --git a/fer/common/slash.parm b/fer/common/slash.parm
index 8ebda1a..9696853 100644
--- a/fer/common/slash.parm
+++ b/fer/common/slash.parm
@@ -63,6 +63,7 @@
 *                  SHOW GRID/FILE, SHOW GRID/CLOBBER, SHOW GRID/APPEND
 * V690 12/13 *sh* /SIGMA and /CURVILINEAR
 * V687  3/14 *acm* add SET AXIS/NAME
+* V691+ 8/14 *acm* Fix ticket 2194: SHOW with /OUTFILE and not /XML. 
 
 * command qualifier states
 	INTEGER		qual_on,
@@ -425,8 +426,8 @@
      .			slash_show_grid_x0 = 7,
      .			slash_show_grid_i0 = 1,
      .			slash_show_grid_file = 16,
-     .			slash_show_grid_clobber = 17,
-     .			slash_show_grid_append = 18,
+     .			slash_show_grid_append = 17,
+     .			slash_show_grid_clobber = 18,
      .
      .			slash_show_data_brief = 2,
      .			slash_show_data_file = 8,
diff --git a/fer/ctx/get_var_context.F b/fer/ctx/get_var_context.F
index ae028e3..5665ce1 100644
--- a/fer/ctx/get_var_context.F
+++ b/fer/ctx/get_var_context.F
@@ -65,6 +65,9 @@
 * V685 4/13 *sh* parse the auxiliary regridding context terms ("*aux*"), too
 *	         and don't report errors in dependency_tree_mode
 * V690 12/13 *sh* bug fix when variable name unrecognized in VTREE mode
+* V693 10/14 *acm fix ticket 2206: If the grid number is a placeholder, don't 
+*                 go call flesh_out_axis etc (See the comment in get_context_mods, where
+*                 the grid is an encoding of the start/end limits of the regrid spec)
 
 	IMPLICIT NONE
 
@@ -180,7 +183,7 @@
 	IF ( status .NE. ferr_ok ) GOTO 5000
 
 * can't do more if the grid isn't known
-	IF ( cx_grid(var_cx) .EQ. unspecified_int4 ) GOTO 100
+	IF ( cx_grid(var_cx) .LE. unspecified_int4 ) GOTO 100
 
 * data set info may be irrelevant
 * indicate that now so memory searches will be correct
diff --git a/fer/ctx/region_class.F b/fer/ctx/region_class.F
index 0a4aab8..c2effde 100644
--- a/fer/ctx/region_class.F
+++ b/fer/ctx/region_class.F
@@ -56,6 +56,7 @@
 * V533: *sh* 6/01 - added trans_event_mask
 *       *acm* 3/12 cleanup ifdefs and unnecessary include files
 *       *acm* 3/12 6D Ferret (common uses nferdims in tmap_dims.parm)
+* V692 7/14 *acm* ticket 2183: handle @WGT transform as for integrals
 
 	include 'tmap_dims.parm'
 	include 'ferret.parm'
@@ -68,6 +69,8 @@
 	   REGION_CLASS = 3    ! uvlim_*_xact
 	ELSEIF ( cx_trans( idim,cx ) .EQ. trans_integ_indef
      .      .OR. cx_trans( idim,cx ) .EQ. trans_run_sum
+     .      .OR. cx_trans( idim,cx ) .EQ. trans_avg_wgt
+     .      .OR. cx_trans( idim,cx ) .EQ. trans_4d_avg_wgt
      .      .OR. cx_trans( idim,cx ) .EQ. trans_event_mask ) THEN
 	   REGION_CLASS = 1    ! uvlim_*_lo
 	ELSEIF ( cx_trans( idim,cx ) .EQ. trans_wgted_eq ) THEN
diff --git a/fer/dat/xalgebra_data.F b/fer/dat/xalgebra_data.F
index 2938c05..0c35877 100644
--- a/fer/dat/xalgebra_data.F
+++ b/fer/dat/xalgebra_data.F
@@ -683,10 +683,16 @@
      .		alg_trans_dflt_arg( 41)/ bad_val4		/,
      .		alg_trans_text ( 42 )	/ 'STD'  		/, 
      .		alg_trans_title( 42 )	/ 'standard deviation'  /,
-     .		alg_trans_num  ( 42 )	/ trans_std_dev  	/
+     .		alg_trans_num  ( 42 )	/ trans_std_dev  	/,
+     .		alg_trans_text ( 43 )	/ 'WGT'  		/, 
+     .		alg_trans_title( 43 )	/ 'weights for avg,int'  /,
+     .		alg_trans_num  ( 43 )	/ trans_avg_wgt  	/,
+     .		alg_trans_text ( 44 )	/ 'WG4'  		/, 
+     .		alg_trans_title( 44 )	/ '4D weights, avg,int'  /,
+     .		alg_trans_num  ( 44 )	/ trans_4d_avg_wgt  	/
 
-        DATA    (alg_trans_num(i),i = 43, num_transforms)
-     .            /18*unspecified_int4 /
+        DATA    (alg_trans_num(i),i = 45, num_transforms)
+     .            /16*unspecified_int4 /
 
 	DATA
      .		alg_regrid_title( prgrd_exact )		/ ' '	/,
@@ -783,7 +789,7 @@
      .				/2*.FALSE./
 
 * translation table for substituting 1D transformations with 4D transforms
-	DATA	num_4d_trans/ 6 /
+	DATA	num_4d_trans/ 7 /
 	DATA	alg_1d_to_4d(1) /trans_average/,
      .		alg_4d_trans(1) /trans_4d_ave/,
      .		alg_1d_to_4d(2) /trans_integ_def/,
@@ -795,7 +801,9 @@
      .		alg_1d_to_4d(5) /trans_bad_pt/,
      .		alg_4d_trans(5) /trans_4d_bad_pt/,
      .		alg_1d_to_4d(6) /trans_sum/,
-     .		alg_4d_trans(6) /trans_4d_sum/
+     .		alg_4d_trans(6) /trans_4d_sum/,
+     .		alg_1d_to_4d(7) /trans_avg_wgt/,
+     .		alg_4d_trans(7) /trans_4d_avg_wgt/
 
 	END
 
diff --git a/fer/dat/xrevision_data.F b/fer/dat/xrevision_data.F
index 48ba1eb..1a6179a 100644
--- a/fer/dat/xrevision_data.F
+++ b/fer/dat/xrevision_data.F
@@ -105,13 +105,25 @@
 * V6.65  10/01/10
 * V6.74   4/2011  to GFDL: double precision, netCDF4.2, fix ticket 1391 
 * V6.84  12/2012  Ribbon plots, bug fixes.
+* V6.9    4/2014  
+* V6.91   internal, not released. Fixes on v6.9
+* V6.92   internal, new color /key options any of 
+*           /key=vertical,horizontal,centerlabel
+* V6.921   internal, @WGT and defined axis for EZ reads
+* V6.922   final tweaks to /key=centerlab, internal tag for SOCAT testing
+* v6.923   fix ticket 2187
+* v6.924   fix ticket 2186 
+* v6.925   fix ticket 2194
+* v6.926   fix ticket 2203, 2200
+* v6.927   fix ticket 2205, 2206
+* v6.93    release
 
         IMPLICIT NONE
 	include	'xrevision.cmn'
 
 	DATA program_name	/ 'FERRET' /
 	DATA len_program_name	/  6       /
-	DATA revision_level	/  6.9    /
+	DATA revision_level	/  6.93   /
 
 ! Note we can put a debug title in the Ferret startup header lines
 ! by putting a title into the Makefile: $(MAKE) "DEBUG_TITLE=beta" update
diff --git a/fer/doo/SOURCE_FILES b/fer/doo/SOURCE_FILES
index 7627c09..e0a1801 100644
--- a/fer/doo/SOURCE_FILES
+++ b/fer/doo/SOURCE_FILES
@@ -9,6 +9,7 @@ dd1step.F\
 dd2step.F\
 diag_op.F\
 do_4d_ave.F\
+do_4d_ave_wgt.F\
 do_4d_int_def.F\
 do_4d_nbd.F\
 do_4d_ngd.F\
@@ -17,6 +18,7 @@ do_4d_string_trans.F\
 do_4d_sum.F\
 do_4d_trans.F\
 do_4d_var.F\
+do_4d_wgt.F\
 do_asn_regrid.F\
 do_aux_var_regrid.F\
 do_aux_var_regrid_1d.F\
@@ -25,6 +27,7 @@ do_aux_var_regrid_line_lin.F\
 do_ave_int.F\
 do_ave_regrid.F\
 do_average.F\
+do_avg_wgt.F\
 do_deriv_bkwd.F\
 do_deriv_cntr.F\
 do_deriv_frwd.F\
@@ -69,6 +72,7 @@ do_string_shift.F\
 do_sum.F\
 do_var_sub.F\
 do_variance.F\
+do_wgt.F\
 do_window_regrid.F\
 do_xact_regrid.F\
 do_xyave_regrid.F\
diff --git a/fer/doo/do_xyave_regrid.F b/fer/doo/do_4d_ave_wgt.F
similarity index 67%
copy from fer/doo/do_xyave_regrid.F
copy to fer/doo/do_4d_ave_wgt.F
index 7876c46..5998181 100644
--- a/fer/doo/do_xyave_regrid.F
+++ b/fer/doo/do_4d_ave_wgt.F
@@ -1,5 +1,7 @@
-	SUBROUTINE DO_XYAVE_REGRID( cx_lims, src, msrc, dst, mdst,
-     .				    work, src_cx, dst_cx, iwork2, itot )
+	INTEGER FUNCTION DO_4D_AVE_WGT(	idim, arg,
+     .					com, com_mr, com_cx,
+     .					res, res_mr, res_cx,
+     .					boxes	)
 
 *
 *
@@ -36,32 +38,39 @@
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
 *
-* call the xy-area regridding routine with appropriate work arrays
+* Return weights as for avg/integral on the grid
 
-* programmer - steve hankin
-* NOAA/PMEL, Seattle, WA - Tropical Modeling and Analysis Program
-* written for VAX computer under VMS operating system
-*
-* V200: 12/1/89 - 4D symmetrical version - regrid only 1 axis
-* V552:  4/04 *acm* - bug fix.  For @AVE and related transforms @SUM, etc.
-*                     send src_lo_ss and src_hi_ss for the range on the src
-*                     axis.  
-*        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* programmer - Ansley Manke
+* NOAA/PMEL, Seattle, WA 
+* 7/2014
+
+* V692 7/14 *acm* new transform @WGT, ticket 2180
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
 	include	'ferret.parm'
-	include	'xcontext.cmn'
+	include	'errmsg.parm'
+	include	'interp_stack.parm'
+	include	'xprog_state.cmn'
 
 * calling argument declarations:
-	INTEGER	cx_lims, axis, msrc, mdst, iwork2, itot, src_cx, dst_cx
-	REAL	src(*), dst(*), work(itot)
+	INTEGER	idim, com_mr, com_cx, res_mr, res_cx
+	REAL	arg, com(*), res(*), boxes(*)
+
+* internal variable declarations:
+	INTEGER	CX_DIM_LEN
+
+* diagnostic mode output: " doing --> VAR_NAME[x=lo:hi at TRN:n,D=#]"
+	IF ( mode_diagnostic ) 	CALL DIAG_OP
+     .				( 'doing', isact_class_trans, res_cx, idim )
+
+* pass the transform to be performeds
+	CALL DO_4D_WGT (   trans_4d_avg_wgt,
+     .			    com, com_mr, com_cx,
+     .			    res, res_mr, res_cx,
+     .			    boxes )
 
-	CALL XYAVE_REGRID( cx_lims,
-     .			   cx_lo_ss(cx_lims,x_dim), cx_hi_ss(cx_lims,x_dim),
-     .			   cx_lo_ss(cx_lims,y_dim), cx_hi_ss(cx_lims,y_dim),
-     .			   src, msrc, dst, mdst, src_cx, dst_cx, 
-     .                     work(1), work(iwork2) )
+	DO_4D_AVE_WGT = ferr_ok
 
 	RETURN
 	END
diff --git a/fer/doo/do_4d_wgt.F b/fer/doo/do_4d_wgt.F
new file mode 100644
index 0000000..d1badc2
--- /dev/null
+++ b/fer/doo/do_4d_wgt.F
@@ -0,0 +1,303 @@
+	SUBROUTINE DO_4D_WGT( action,
+     .				com, com_mr, com_cx,
+     .				res, res_mr, res_cx,
+     .				boxes )
+
+*
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration''s (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+*
+* perform a multi-axis transformation
+
+* multi-axis transformations are those special cases where sequential
+* application of single-axis transforms may yield improper results. For
+* example, averaging within a circular region would give inappropriate
+* results if carried out sequentially: the first axis of averaging would
+* be correct but the second axis would weight each averaged row from the
+* first axis equally, despite the fact that they represented different
+* numbers of data points.
+
+* Return weights as for avg/integral on the grid
+
+* programmer - Ansley Manke
+* NOAA/PMEL, Seattle, WA 
+* 7/2014
+
+* V692 7/14 *acm* new transform @WGT, ticket 2180
+
+	IMPLICIT NONE
+        include 'tmap_dims.parm'
+	include	'ferret.parm'
+	include	'interp_stack.parm'
+	include	'xcontext.cmn'
+	include	'xvariables.cmn'
+	include	'xmem_subsc.cmn'
+	include 'xunits.cmn_text'
+	external xunits_data
+	include 'xtm_grid.cmn_text'
+	external xgt_grid_data
+
+* internal variable declarations:
+	LOGICAL GEOG_COS_FACTOR, point, yes_ax(nferdims), no_ax(nferdims),
+     .		need_cos, one_y
+	INTEGER idim, i, j, ir, jr, kr, lr, mr, nr, ic, jc, kc, lc, mc, nc,
+     .		grid, nbd, ngd, com_lo(nferdims), com_hi(nferdims),
+     .		box_offset(nferdims), offset, ind_lo, ind_hi, cos_offset
+	REAL	BOX_SIZE, unit, bad_com, bad_res, box, mean, diff,
+     .		xbox, ybox, zbox, tbox, ebox, fbox,
+     .		yc, yh, yh_2, bb, ybxlo, ybxhi
+	REAL*8	TM_WORLD, dsum, bsum
+
+* calling argument declarations:
+	INTEGER	action, com_mr, com_cx, res_mr, res_cx
+	REAL    com ( m1lox:m1hix,m1loy:m1hiy,m1loz:m1hiz,
+     .                m1lot:m1hit,m1loe:m1hie,m1lof:m1hif ),
+     .          res ( m2lox:m2hix,m2loy:m2hiy,m2loz:m2hiz,
+     .                m2lot:m2hit,m2loe:m2hie,m2lof:m2hif ),
+     .		boxes(*)
+
+* equivalences
+	LOGICAL yes_xax, yes_yax, yes_zax,
+     .          yes_tax, yes_eax, yes_fax,
+     .          no_xax,  no_yax,  no_zax,
+     .          no_tax,  no_eax,  no_fax
+
+     	INTEGER	ioffset, joffset, koffset, loffset, moffset, noffset,
+     .		i_lo, j_lo, k_lo, l_lo, m_lo, n_lo,
+     .		i_hi, j_hi, k_hi, l_hi, m_hi, n_hi
+
+	EQUIVALENCE ( yes_ax(1), yes_xax ),
+     .		    ( yes_ax(2), yes_yax ),
+     .		    ( yes_ax(3), yes_zax ),
+     .		    ( yes_ax(4), yes_tax ),
+     .		    ( yes_ax(5), yes_eax ),
+     .		    ( yes_ax(6), yes_fax ),
+     .		    (  no_ax(1),  no_xax ),
+     .		    (  no_ax(2),  no_yax ),
+     .		    (  no_ax(3),  no_zax ),
+     .		    (  no_ax(4),  no_tax ),
+     .		    (  no_ax(5),  no_eax ),
+     .		    (  no_ax(6),  no_fax ),
+     .		    ( box_offset(1), ioffset ),
+     .		    ( box_offset(2), joffset ),
+     .		    ( box_offset(3), koffset ),
+     .		    ( box_offset(4), loffset ),
+     .		    ( box_offset(5), moffset ),
+     .		    ( box_offset(6), noffset ),
+     .		    (  com_lo(1),  i_lo ),
+     .		    (  com_lo(2),  j_lo ),
+     .		    (  com_lo(3),  k_lo ),
+     .		    (  com_lo(4),  l_lo ),
+     .		    (  com_lo(5),  m_lo ),
+     .		    (  com_lo(6),  n_lo ),
+     .		    (  com_hi(1),  i_hi ),
+     .		    (  com_hi(2),  j_hi ),
+     .		    (  com_hi(3),  k_hi ),
+     .		    (  com_hi(4),  l_hi ),
+     .		    (  com_hi(5),  m_hi ),
+     .		    (  com_hi(6),  n_hi )
+
+* --- end of introductory code ---
+
+* initialize
+	grid = mr_grid( com_mr )
+	bad_com = mr_bad_data( com_mr )
+	bad_res = mr_bad_data( res_mr )
+        point = .FALSE.
+	one_y = .FALSE.
+
+* determine the axes to be transformed
+	DO 10 idim = 1, nferdims
+	  yes_ax(idim) = cx_trans(idim,res_cx) .EQ. action
+	  no_ax (idim) = .NOT.yes_ax(idim)
+ 10	CONTINUE
+
+* get and save grid box sizes (weights) just once for efficiency
+* ... save all axes in one long array with offsets to find the starts
+* Note that "cx_lo_ss(com_cx,idim)" is subtracted so offsets pre-compensate
+*    for the axes starting above index = 1
+
+	offset = 0
+	DO 90 idim = 1, nferdims
+	  IF (yes_ax(idim)) THEN
+	    box_offset(idim) = offset - cx_lo_ss(com_cx,idim) + 1 ! pre-comp'ed
+	    offset = offset + 
+     .	             cx_hi_ss(com_cx,idim)-cx_lo_ss(com_cx,idim)+1
+	  ELSE
+	    box_offset(idim) = -9999
+	  ENDIF
+ 90	CONTINUE
+! COS(latitudes) also stored in the box array (8/96)
+	cos_offset = offset - cx_lo_s2(com_cx) + 1
+
+* ... save the box sizes
+	DO 100 idim = 1, nferdims
+	  ind_lo = cx_lo_ss(com_cx,idim)
+	  ind_hi = cx_hi_ss(com_cx,idim)
+	  offset = box_offset(idim)
+	  IF (yes_ax(idim)) THEN
+            point = .FALSE.
+	    IF ( ind_lo .EQ. ind_hi ) THEN    ! 8/92
+              boxes(ind_lo+offset) = cx_hi_ww(idim,res_cx)
+     .				 - cx_lo_ww(idim,res_cx)
+              point = boxes(ind_lo+offset) .EQ. 0.0
+            ELSE
+* ... partial box at lower end
+	      boxes(ind_lo+offset) = TM_WORLD(ind_lo, grid, idim, box_hi_lim)
+     .				 - cx_lo_ww(idim,res_cx)
+
+* ... complete boxes mid-axis
+	      DO 40 i = ind_lo+1, ind_hi-1
+ 40	      boxes(i+offset)  = BOX_SIZE( i, grid, idim )
+* ... partial box at upper end
+	      boxes(ind_hi+offset) = cx_hi_ww(idim,res_cx)
+     .		   - TM_WORLD(ind_hi, grid, idim, box_lo_lim)
+            ENDIF
+* ... perform integrations on standard units if possible
+            unit = 1.
+	    unit = un_convert( line_unit_code(grid_line(idim,grid)) )
+
+	    DO 50 i = ind_lo, ind_hi
+ 	      boxes(i+offset) = boxes(i+offset) * unit
+ 50         continue
+ 	    IF (point) boxes(ind_lo+offset) = 1.
+	  ENDIF
+ 100	CONTINUE
+
+* impose cosine factors if latitude and longitude are involved
+* 5/97 - only use COS(y) if X integration is involved and Y axis lims are VALID
+* 3/06 - apply Andrew*s suggested correction for XY integ., bug1348
+* 6/06   fix the correction; boxes(i+offset) is in meters, so convert back to 
+*        degrees, then radians. Compute the factor, and then convert to meters.
+C See this thread:
+C http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2009/msg00506.html
+C And also ticket 1348. The surface area of sphere depends only on h
+C http://mathworld.wolfram.com/Zone.html. Fix for @DIN too.
+
+	need_cos = GEOG_COS_FACTOR( y_dim,grid )
+     .		.AND. yes_xax
+     .	 	.AND. cx_lo_s2(com_cx) .NE. unspecified_int4
+        one_y = (cx_lo_ww(y_dim,res_cx) .EQ. cx_hi_ww(y_dim,res_cx))
+
+	IF ( need_cos ) THEN
+	   DO 120 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+
+C Compute the y boxes if there is a y axis; the computation may be 
+C avgs in other directions but we need the ybox size at a given y
+C The top and bottom boxes extend only to the coordinate locations,
+C (Unless there is just one grid cell in the y direction.)
+
+#ifdef double_p
+	      ybxlo = deg2rad* 
+     .                TM_WORLD(j, grid, y_dim, box_lo_lim)
+	      ybxhi = deg2rad* 
+     .                TM_WORLD(j, grid, y_dim, box_hi_lim)
+#else
+	      ybxlo = deg2rad* 
+     .                SNGL( TM_WORLD(j, grid, y_dim, box_lo_lim) )
+	      ybxhi = deg2rad* 
+     .                SNGL( TM_WORLD(j, grid, y_dim, box_hi_lim) )
+#endif
+	      IF (j .EQ. cx_lo_s2(com_cx) .AND. .NOT.one_y)
+     .                ybxlo = deg2rad* cx_lo_ww(y_dim,res_cx)
+
+	      IF (j .EQ. cx_hi_s2(com_cx) .AND. .NOT.one_y)
+     .                ybxhi = deg2rad* cx_hi_ww(y_dim,res_cx)
+	      
+	      yh = ybxhi-ybxlo  
+	      boxes(j+cos_offset) = ABS( SIN(ybxhi) - SIN(ybxlo) )/yh
+
+ 120       CONTINUE
+	ELSE
+	   DO 121 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+ 121	      boxes(j+cos_offset)  = 1.0
+	ENDIF
+
+* do the transformation: return box size 
+
+* Set default box size for untransformed axes
+* (multiplying  by 1.0 to have nil effect)
+	xbox = 1.0
+	ybox = 1.0
+	zbox = 1.0
+	tbox = 1.0
+	ebox = 1.0
+	fbox = 1.0
+
+* Loop over the component data, returning box sizes
+
+	n_lo = cx_lo_s6(res_cx)
+	n_hi = cx_hi_s6(res_cx)
+	m_lo = cx_lo_s5(res_cx)
+	m_hi = cx_hi_s5(res_cx)
+	l_lo = cx_lo_s4(res_cx)
+	l_hi = cx_hi_s4(res_cx)
+	k_lo = cx_lo_s3(res_cx)
+	k_hi = cx_hi_s3(res_cx)
+	j_lo = cx_lo_s2(res_cx)
+	j_hi = cx_hi_s2(res_cx)
+	i_lo = cx_lo_s1(res_cx)
+	i_hi = cx_hi_s1(res_cx)
+
+* Set the range of loop indices for the component data on the transformed axes
+	DO 150 idim = 1, nferdims
+	  IF (yes_ax(idim)) THEN
+	    com_lo(idim) = cx_lo_ss(com_cx,idim)
+	    com_hi(idim) = cx_hi_ss(com_cx,idim)
+	  ENDIF
+ 150	CONTINUE
+	
+	DO 220 nc = n_lo, n_hi
+	IF (yes_fax) fbox = boxes(nc+noffset)
+	DO 220 mc = m_lo, m_hi
+	IF (yes_eax) ebox = boxes(mc+moffset)
+	DO 220 lc = l_lo, l_hi
+	IF (yes_tax) tbox = boxes(lc+loffset)
+	DO 220 kc = k_lo, k_hi
+	IF (yes_zax) zbox = boxes(kc+koffset)
+	DO 220 jc = j_lo, j_hi
+	IF (yes_yax) ybox = boxes(jc+joffset)
+	DO 220 ic = i_lo, i_hi
+	IF (yes_xax) xbox = boxes(ic+ioffset)
+
+	    box = xbox * ybox * zbox * tbox * ebox * fbox
+	    IF (need_cos) box = box * boxes(jc+cos_offset)
+	    res(ic,jc,kc,lc,mc,nc) = box
+
+ 220	CONTINUE
+
+	RETURN
+
+	END
+
diff --git a/fer/doo/do_xyave_regrid.F b/fer/doo/do_avg_wgt.F
similarity index 74%
copy from fer/doo/do_xyave_regrid.F
copy to fer/doo/do_avg_wgt.F
index 7876c46..ac1581b 100644
--- a/fer/doo/do_xyave_regrid.F
+++ b/fer/doo/do_avg_wgt.F
@@ -1,5 +1,7 @@
-	SUBROUTINE DO_XYAVE_REGRID( cx_lims, src, msrc, dst, mdst,
-     .				    work, src_cx, dst_cx, iwork2, itot )
+	INTEGER FUNCTION DO_AVG_WGT(	idim, arg,
+     .					com, com_mr, com_cx,
+     .					res, res_mr, res_cx,
+     .					box	)
 
 *
 *
@@ -36,32 +38,42 @@
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
 *
-* call the xy-area regridding routine with appropriate work arrays
+* average the component grid into the result grid
+* (done by calling a single routine used for both averaging and integrating)
 
 * programmer - steve hankin
 * NOAA/PMEL, Seattle, WA - Tropical Modeling and Analysis Program
 * written for VAX computer under VMS operating system
 *
-* V200: 12/1/89 - 4D symmetrical version - regrid only 1 axis
-* V552:  4/04 *acm* - bug fix.  For @AVE and related transforms @SUM, etc.
-*                     send src_lo_ss and src_hi_ss for the range on the src
-*                     axis.  
+* V200:  6/1/89
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
 	include	'ferret.parm'
+	include	'errmsg.parm'
+	include	'interp_stack.parm'
 	include	'xcontext.cmn'
+	include	'xprog_state.cmn'
 
 * calling argument declarations:
-	INTEGER	cx_lims, axis, msrc, mdst, iwork2, itot, src_cx, dst_cx
-	REAL	src(*), dst(*), work(itot)
+	INTEGER	idim, com_mr, com_cx, res_mr, res_cx
+	REAL	arg, com(*), res(*), box(*)
 
-	CALL XYAVE_REGRID( cx_lims,
-     .			   cx_lo_ss(cx_lims,x_dim), cx_hi_ss(cx_lims,x_dim),
-     .			   cx_lo_ss(cx_lims,y_dim), cx_hi_ss(cx_lims,y_dim),
-     .			   src, msrc, dst, mdst, src_cx, dst_cx, 
-     .                     work(1), work(iwork2) )
+* internal variable declarations:
+* ...
+
+* diagnostic mode output: " doing --> VAR_NAME[x=lo:hi at TRN:n,D=#]"
+	IF ( mode_diagnostic ) 	CALL DIAG_OP
+     .				( 'doing', isact_class_trans, res_cx, idim )
+
+	CALL DO_WGT( isact_avg_wgt, idim,
+     .			 cx_lo_ss(com_cx,idim), cx_hi_ss(com_cx,idim),
+     .			 com, com_mr, com_cx,
+     .			 res, res_mr, res_cx,
+     .			 box )
+
+	DO_AVG_WGT = ferr_ok
 
 	RETURN
 	END
diff --git a/fer/doo/do_internal_gc_fcn.F b/fer/doo/do_internal_gc_fcn.F
index 518405c..c63a0d8 100644
--- a/fer/doo/do_internal_gc_fcn.F
+++ b/fer/doo/do_internal_gc_fcn.F
@@ -96,6 +96,7 @@
 *                   of argument/return-type variable and predimensional (data size)
 *                   array parameter (pointer size to one in double-precision Ferret).
 * V68   5/12 *acm* Add ESEQUENCE, FSEQUENCE, SAMPLEM, SAMPLEN
+* V693 10/14 *acm* ticket 2210: check for negative arguments to SUBSTRING
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -158,7 +159,8 @@
         INTEGER max_cmnd_len
         PARAMETER ( max_cmnd_len = 2048 )
         CHARACTER GET_STRING_ELEMENT*(max_cmnd_len), buff*(max_cmnd_len)
-        INTEGER nnew, slen
+	CHARACTER*10 TM_FMT, argval
+        INTEGER nnew, slen, narg
 
 * equivalence conveniences
 * "inc" is the increments for each axis of each component
@@ -967,6 +969,15 @@
 * Convert the offset and length to integers
               ioff = com2(1,i2,j2,k2,l2,m2,n2)
               ilen = com3(1,i3,j3,k3,l3,m3,n3)
+* argument checking:
+	      IF (ioff.LT.0) THEN
+	         narg = 2
+		 GOTO 5100
+	      ENDIF
+	      IF (ilen.LT.0)  THEN
+	         narg = 3
+		 GOTO 5100
+	      ENDIF
               CALL C_SUBSTR(com1(1,i1,j1,k1,l1,m1,n1),
      .                      ioff, ilen, res(1,i,j,k,l,m,n))
  3450   CONTINUE
@@ -1005,4 +1016,9 @@
 
 * error exits
  5000	RETURN
+ 5100	argval = TM_FMT(FLOAT(narg), 2, 40, slen)
+	CALL ERRMSG(ferr_out_of_range, status,
+     .   'Negative argument to function. Argument '//
+     .    argval(:slen)//' : SUBSTRING', *5000 )
+
 	END
diff --git a/fer/doo/do_wgt.F b/fer/doo/do_wgt.F
new file mode 100644
index 0000000..b397c70
--- /dev/null
+++ b/fer/doo/do_wgt.F
@@ -0,0 +1,244 @@
+	SUBROUTINE DO_WGT(	action, idim, com_lo, com_hi,
+     .				com, com_mr, com_cx,
+     .				res, res_mr, res_cx,
+     .				box )
+
+*
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration''s (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+*
+* Return the weights as they would be used for an integral
+* on a single axis, with correction for latitude if needed.
+*
+* programmer - Ansley Manke
+* NOAA/PMEL, Seattle, WA 
+* 7/2014
+*
+* V692 7/14 *acm* new transform @WGT, ticket 2180
+
+        IMPLICIT NONE
+        include 'tmap_dims.parm'
+	include	'ferret.parm'
+	include	'interp_stack.parm'
+	include	'xcontext.cmn'
+	include	'xvariables.cmn'
+	include	'xmem_subsc.cmn'
+	include 'xunits.cmn_text'
+	external xunits_data
+	include 'xtm_grid.cmn_text'
+	external xgt_grid_data
+
+* internal variable declarations:
+	LOGICAL	GEOG_COS_FACTOR, need_cos, integrate, point
+	INTEGER i, j, k, l, m, n, grid, lo, hi, axis
+	REAL	BOX_SIZE, unit, bad_com, bad_res, cos_factor,
+     .          ybxlo, ybxhi, yh
+	REAL*8	TM_WORLD, dsum, bsum
+
+* calling argument declarations:
+	INTEGER	action, idim, com_lo, com_hi, com_mr, com_cx, res_mr, res_cx
+	REAL    com( m1lox:m1hix,m1loy:m1hiy,m1loz:m1hiz,
+     .               m1lot:m1hit,m1loe:m1hie,m1lof:m1hif ),
+     .          res( m2lox:m2hix,m2loy:m2hiy,m2loz:m2hiz,
+     .               m2lot:m2hit,m2loe:m2hie,m2lof:m2hif ),
+     .		box( com_lo:com_hi )
+
+* --- end of introductory code ---
+
+* initialize
+	grid = mr_grid( com_mr )
+	axis = grid_line( idim, grid )
+	lo   = com_lo
+	hi   = com_hi
+	bad_com = mr_bad_data( com_mr )
+	bad_res = mr_bad_data( res_mr )
+	integrate = action .EQ. isact_integ_def
+        point = .FALSE.
+
+* get and save grid box sizes (weights) just once for efficiency
+* (end boxes may be only partially weighted)
+        IF ( lo .EQ. hi ) THEN    ! 8/92
+           box(lo) = cx_hi_ww(idim,res_cx) - cx_lo_ww(idim,res_cx)
+           point = box(lo) .EQ. 0.0
+        ELSE
+	   box(lo) = TM_WORLD(lo, grid, idim, box_hi_lim)
+     .		   - cx_lo_ww(idim,res_cx)
+	   DO 100 i = lo+1, hi-1
+ 100	   box(i)  = BOX_SIZE( i, grid, idim )
+	   box(hi) = cx_hi_ww(idim,res_cx)
+     .		   - TM_WORLD(hi, grid, idim, box_lo_lim)
+        ENDIF
+
+* perform integrations on standard units if possible
+	
+	unit = un_convert( line_unit_code(axis) )
+	IF (unit .NE. 1.) THEN
+	   DO 110 i = lo, hi
+ 110       box(i) = box(i) * unit
+        ENDIF
+
+* Compute weights
+* ALONG X AXIS
+* (note: X is a special case because it requires COSINE(lat) )
+	IF ( idim .EQ. x_dim ) THEN
+	   cos_factor = 1.
+	   need_cos = GEOG_COS_FACTOR( idim, grid )
+     .                .AND. cx_lo_s2(com_cx).NE.unspecified_int4
+	   DO 210 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	   IF ( need_cos ) THEN
+#ifdef double_p
+	      cos_factor = COS( deg2rad *       
+     .             TM_WORLD(j, grid, y_dim, box_middle) ) 
+              ybxlo = deg2rad* 
+     .             TM_WORLD(j,grid,y_dim,box_lo_lim)
+              ybxhi = deg2rad* 
+     .             TM_WORLD(j,grid,y_dim,box_hi_lim)
+#else
+	      cos_factor = COS( deg2rad *       
+     .             SNGL( TM_WORLD(j, grid, y_dim, box_middle) ) ) 
+              ybxlo = deg2rad* 
+     .             SNGL( TM_WORLD(j,grid,y_dim,box_lo_lim) )
+              ybxhi = deg2rad* 
+     .             SNGL( TM_WORLD(j,grid,y_dim,box_hi_lim) )
+#endif
+              yh = ABS(ybxhi - ybxlo)
+	      cos_factor = ABS( SIN(ybxhi) - SIN(ybxlo) )/ yh
+
+	      
+	      ! cos(yc) * abs(sin(yh/2))/(yh/2) 
+ 
+	      cos_factor = COS( deg2rad*
+     .               TM_WORLD(j, grid, y_dim, box_middle) )* 
+     .               ABS(SIN(yh/2)/(yh/2) )
+	   ENDIF
+	   
+	   DO 210 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	   DO 210 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	   DO 210 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	   DO 210 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	   IF ( point ) THEN  
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 200 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+	          res(i,j,k,l,m,n) = box(i)* cos_factor
+ 200	      CONTINUE
+	   ENDIF
+ 210	   CONTINUE
+
+* ALONG Y AXIS
+	ELSEIF ( idim .EQ. y_dim ) THEN
+	   DO 310 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	   DO 310 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	   DO 310 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	   DO 310 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	   DO 310 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+	   IF ( point ) THEN
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 300 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	         res(i,j,k,l,m,n) = box(j)
+ 300	      CONTINUE
+	   ENDIF
+ 310	   CONTINUE
+
+* ALONG Z AXIS
+	ELSEIF ( idim .EQ. z_dim ) THEN
+	   DO 410 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	   DO 410 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	   DO 410 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	   DO 410 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	   DO 410 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+              IF ( point ) THEN 
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 400 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	         res(i,j,k,l,m,n) = box(k)
+ 400	      CONTINUE
+           ENDIF
+ 410	   CONTINUE
+
+* ALONG T AXIS
+	ELSEIF ( idim .EQ. t_dim ) THEN
+	   DO 510 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	   DO 510 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	   DO 510 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	   DO 510 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	   DO 510 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+              IF ( point ) THEN
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 500 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	         res(i,j,k,l,m,n) = box(l)
+ 500	      CONTINUE   
+	   ENDIF
+ 510	   CONTINUE
+
+
+* ALONG E AXIS
+	ELSEIF ( idim .EQ. e_dim ) THEN
+	   DO 610 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	   DO 610 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	   DO 610 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	   DO 610 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	   DO 610 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+              IF ( point ) THEN
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 600 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	         res(i,j,k,l,m,n) = box(m)
+ 600	      CONTINUE
+           ENDIF
+ 610	   CONTINUE
+
+
+* ALONG F AXIS
+	ELSEIF ( idim .EQ. f_dim ) THEN
+	   DO 710 m = cx_lo_s5(com_cx), cx_hi_s5(com_cx)
+	   DO 710 l = cx_lo_s4(com_cx), cx_hi_s4(com_cx)
+	   DO 710 k = cx_lo_s3(com_cx), cx_hi_s3(com_cx)
+	   DO 710 j = cx_lo_s2(com_cx), cx_hi_s2(com_cx)
+	   DO 710 i = cx_lo_s1(com_cx), cx_hi_s1(com_cx)
+              IF ( point ) THEN
+	      res(i,j,k,l,m,n) = 0.
+	   ELSE
+	      DO 700 n = cx_lo_s6(com_cx), cx_hi_s6(com_cx)
+	         res(i,j,k,l,m,n) = box(n)
+ 700	      CONTINUE
+	   ENDIF
+ 710	   CONTINUE
+
+	ENDIF
+
+	RETURN
+	END
diff --git a/fer/doo/do_xyave_regrid.F b/fer/doo/do_xyave_regrid.F
index 7876c46..0d795ab 100644
--- a/fer/doo/do_xyave_regrid.F
+++ b/fer/doo/do_xyave_regrid.F
@@ -1,5 +1,6 @@
 	SUBROUTINE DO_XYAVE_REGRID( cx_lims, src, msrc, dst, mdst,
-     .				    work, src_cx, dst_cx, iwork2, itot )
+     .				    work, src_cx, dst_cx, iwork2, itot, 
+     .				    aweight )
 
 *
 *
@@ -54,14 +55,15 @@
 	include	'xcontext.cmn'
 
 * calling argument declarations:
-	INTEGER	cx_lims, axis, msrc, mdst, iwork2, itot, src_cx, dst_cx
+	INTEGER	cx_lims, axis, msrc, mdst, iwork2, itot, src_cx, dst_cx,
+     .		aweight
 	REAL	src(*), dst(*), work(itot)
 
 	CALL XYAVE_REGRID( cx_lims,
      .			   cx_lo_ss(cx_lims,x_dim), cx_hi_ss(cx_lims,x_dim),
      .			   cx_lo_ss(cx_lims,y_dim), cx_hi_ss(cx_lims,y_dim),
      .			   src, msrc, dst, mdst, src_cx, dst_cx, 
-     .                     work(1), work(iwork2) )
+     .                     work(1), work(iwork2), aweight )
 
 	RETURN
 	END
diff --git a/fer/doo/xyave_regrid.F b/fer/doo/xyave_regrid.F
index 7cf7b88..c7cfbb9 100644
--- a/fer/doo/xyave_regrid.F
+++ b/fer/doo/xyave_regrid.F
@@ -107,7 +107,7 @@
 
 	REAL	AXIS_DISTANCE, BOX_SIZE,
      .          xdist, ydist, area, sum, darea, bad_src, bad_dst,
-     .          cos_fact, area_earth, ybxlo, ybxhi
+     .          cos_fact, area_earth, ybxlo, ybxhi, yh 
 
         REAL*8	TWORLD,
      .          xsrc_lo, xsrc_hi, ysrc_lo, ysrc_hi,
@@ -201,23 +201,16 @@
 	   DO 51 jsrc = jsrc_lo, jsrc_hi
 	   cos_fact = 1.0
 	   IF ( need_cos ) THEN
-!             cos_fact = COS(deg2rad*TWORLD(jsrc,src_grid,dim2,box_middle)) !old method!
-!             yc = TWORLD(jsrc,src_grid,dim2,box_middle)
-!             bx = BOX_SIZE( jsrc, src_grid, dim2 )
-!             yh_2 = 0.5*deg2rad * bx
-!             yc = deg2rad * yc
-!             cos_fact = COS(yc) * 2.*ABS( SIN(yh_2) )
-
-C The above are all OK if the coordinate point is in the middle of the box.
-C If the coordinate is not in the middle of the cell then it should be
-C ABS(SIN(ybxhi)-SIN(ybxlo))  
+
 C See this thread:
 C http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2009/msg00506.html
 C And also ticket 1348.
 
               ybxlo = deg2rad* TWORLD(jsrc,src_grid,dim2,box_lo_lim)
               ybxhi = deg2rad* TWORLD(jsrc,src_grid,dim2,box_hi_lim)
-              cos_fact = ABS( SIN(ybxhi) - SIN(ybxlo) )
+	      
+	      yh = ybxhi-ybxlo  
+              cos_fact = ABS( SIN(ybxhi) - SIN(ybxlo) )/ yh
 
 	   ENDIF
 
diff --git a/fer/ef_utility/ef_get_string_arg_elem_len_sub.F b/fer/ef_utility/ef_get_string_arg_elem_len_sub.F
index 97bbd62..382a2f9 100644
--- a/fer/ef_utility/ef_get_string_arg_elem_len_sub.F
+++ b/fer/ef_utility/ef_get_string_arg_elem_len_sub.F
@@ -43,6 +43,8 @@
 * and we can call GET_STRING_ELEMENT to get the length of a string element.
 *
 *  acm 12/03  from ef_get_arg_string
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
+*
 *
 *       3/12 *kms* Added E and F dimensions
 
@@ -52,9 +54,9 @@
      .        slen, max_line_len
       REAL*8 arg(lox:hix, loy:hiy, loz:hiz, lot:hit, loe:hie, lof:hif)
 
-      CHARACTER*512 text
+      CHARACTER*2048 text
 
-      CHARACTER GET_STRING_ELEMENT*512
+      CHARACTER GET_STRING_ELEMENT*2048
     
       text = GET_STRING_ELEMENT(lox, hix, loy, hiy, loz, hiz,
      .                          lot, hit, loe, hie, lof, hif, arg,
diff --git a/fer/ef_utility/ef_get_string_arg_element_6d.F b/fer/ef_utility/ef_get_string_arg_element_6d.F
index 467845d..490eb03 100644
--- a/fer/ef_utility/ef_get_string_arg_element_6d.F
+++ b/fer/ef_utility/ef_get_string_arg_element_6d.F
@@ -41,6 +41,8 @@ c* This returns an element of the string array which was passed as an argument
 c* to the function and for convenience, its length.
 *
 *       3/12 *kms* Added E and F dimensions, appended _6D to subroutine name
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
+*
 
 
       SUBROUTINE EF_GET_STRING_ARG_ELEMENT_6D(id, iarg, arg,
@@ -61,7 +63,7 @@ c* to the function and for convenience, its length.
      .                          lot, hit, loe, hie, lof, hif
       INTEGER mr_list(EF_MAX_ARGS)
       CHARACTER buff*128
-      PARAMETER (max_line_len = 512)
+      PARAMETER (max_line_len = 2048)
       
       INTEGER arg_lo_ss(nferdims,EF_MAX_ARGS),
      .        arg_hi_ss(nferdims,EF_MAX_ARGS),
diff --git a/fer/ef_utility/ef_get_string_arg_element_len_6d.F b/fer/ef_utility/ef_get_string_arg_element_len_6d.F
index ff00bbc..5638cab 100644
--- a/fer/ef_utility/ef_get_string_arg_element_len_6d.F
+++ b/fer/ef_utility/ef_get_string_arg_element_len_6d.F
@@ -42,6 +42,8 @@
 * was passed as an argument to the external function.
 *
 *       3/12 *kms* Added E and F dimensions, appended _6D to subroutine name
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
+*
 
       IMPLICIT NONE
       INCLUDE 'tmap_dims.parm'
@@ -57,7 +59,7 @@
      .                          lot, hit, loe, hie, lof, hif
       INTEGER mr_list(EF_MAX_ARGS)
       CHARACTER buff*128
-      PARAMETER (max_line_len = 512)
+      PARAMETER (max_line_len = 2048)
       
       INTEGER arg_lo_ss(nferdims,EF_MAX_ARGS),
      .        arg_hi_ss(nferdims,EF_MAX_ARGS),
diff --git a/fer/ef_utility/ef_get_string_arg_element_sub.F b/fer/ef_utility/ef_get_string_arg_element_sub.F
index 3f4bc5f..e2dd622 100644
--- a/fer/ef_utility/ef_get_string_arg_element_sub.F
+++ b/fer/ef_utility/ef_get_string_arg_element_sub.F
@@ -41,6 +41,8 @@
 * and we can call GET_STRING_ELEMENT to get a string element.
 *
 *       3/12 *kms* Added E and F dimensions
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
+*
 
       SUBROUTINE EF_GET_STRING_ARG_ELEMENT_SUB( lox, hix, loy, hiy,
      .                  loz, hiz, lot, hit, loe, hie, lof, hif, arg,
@@ -53,7 +55,7 @@
       CHARACTER*(*) text
       REAL*8 arg(lox:hix, loy:hiy, loz:hiz, lot:hit, loe:hie, lof:hif)
 
-      CHARACTER GET_STRING_ELEMENT*512
+      CHARACTER GET_STRING_ELEMENT*2048
 
       text = GET_STRING_ELEMENT(lox, hix, loy, hiy, loz, hiz,
      .                          lot, hit, loe, hie, lof, hif, arg,
diff --git a/fer/ef_utility/ef_get_string_arg_max_len.F b/fer/ef_utility/ef_get_string_arg_max_len.F
index 3227dfe..2b5d7a2 100644
--- a/fer/ef_utility/ef_get_string_arg_max_len.F
+++ b/fer/ef_utility/ef_get_string_arg_max_len.F
@@ -37,6 +37,8 @@
 * This returns the maximum length of the string elements of a string array
 * which was passed as an argument to the external function.
 *
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
+*
 
       IMPLICIT NONE
       INCLUDE 'tmap_dims.parm'
@@ -54,7 +56,7 @@
      .        lot, hit, loe, hie, lof, hif
       INTEGER mr_list(EF_MAX_ARGS)
       CHARACTER buff*64
-      PARAMETER (max_line_len = 512)
+      PARAMETER (max_line_len = 2048)
       
       INTEGER arg_lo_ss(nferdims,EF_MAX_ARGS),
      .        arg_hi_ss(nferdims,EF_MAX_ARGS),
diff --git a/fer/efi/SOURCE_FILES b/fer/efi/SOURCE_FILES
index 9cfa530..730d3d7 100644
--- a/fer/efi/SOURCE_FILES
+++ b/fer/efi/SOURCE_FILES
@@ -46,6 +46,7 @@ expndi_by_t.F\
 expndi_by_z.F\
 expndi_by_z_counts.F\
 expndi_id_by_z_counts.F\
+expndi_by_m_counts.F\
 fc_isubset.F\
 fcat.F\
 fcat_str.F\
@@ -127,6 +128,7 @@ scat2grid_nobs_xy.F\
 scat2grid_nobs_xyt.F\
 scat2grid_subs.F\
 secs_to_ymdhms.F\
+separate.F\
 sorti.F\
 sorti_str.F\
 sortj.F\
diff --git a/fer/efi/date1900.F b/fer/efi/date1900.F
index dd1d9c1..776206c 100644
--- a/fer/efi/date1900.F
+++ b/fer/efi/date1900.F
@@ -39,6 +39,9 @@
 *               an argument rather than a return from function; under
 *               64-bit the return always yielded 0.
 * V68  *acm* 1/12  ifdef double_p for double-precision ferret.
+* V69+ *acm* 9/14 Make DATE1900 accept an array of date strings, 
+*                 returning an array of coordinates
+
 
 * In this subroutine we provide information about
 * the function.  The user configurable information 
@@ -88,15 +91,15 @@
 *                                                                      V
 
       CALL ef_set_desc (id,
-     .   'Convert a date into Julian days since 1-Jan-1900' )
+     .   'Convert date strings into Julian days since 1-Jan-1900' )
 
       CALL ef_set_num_args(id, 1)
 
       CALL ef_set_axis_inheritance_6d(id,
-     .                                NORMAL, NORMAL,
+     .                                IMPLIED_BY_ARGS, NORMAL,
      .                                NORMAL, NORMAL,
      .                                NORMAL, NORMAL)
-      CALL ef_set_piecemeal_ok_6d(id, NO, NO, NO, NO, NO, NO)
+      CALL ef_set_piecemeal_ok_6d(id, YES, NO, NO, NO, NO, NO)
 
       CALL ef_set_num_work_arrays(id, 0)
 
@@ -108,7 +111,7 @@
       CALL ef_set_arg_desc(id, arg,
      .         'dd-MMM-yy or dd-MMM-yyyy  (e.g. "20-Dec-00")')
       CALL ef_set_axis_influence_6d(id, arg,
-     .                              NO, NO, NO, NO, NO, NO)
+     .                              YES, NO, NO, NO, NO, NO)
 
 *                                                                      ^
 *                                                                      |
@@ -118,40 +121,6 @@
       RETURN 
       END
 
-
-
-*
-* In this subroutine we provide information about the lo and hi
-* limits associated with each abstract or custom axis.   The user 
-* configurable information consists of the following:
-*
-* lo_ss               lo subscript for an axis
-*
-* hi_ss               hi subscript for an axis
-*
-
-      SUBROUTINE date1900_result_limits(id)
-
-      IMPLICIT NONE
-      INCLUDE 'EF_Util.cmn'
-
-      INTEGER id
-
-* **********************************************************************
-*                                           USER CONFIGURABLE PORTION |
-*                                                                     |
-*                                                                     V
-
-
-*                                                                     ^
-*                                                                     |
-*                                           USER CONFIGURABLE PORTION |
-* **********************************************************************
-
-      RETURN 
-      END
-
-
 *
 * In this subroutine we compute the result
 *
@@ -178,6 +147,19 @@
      .            memresloz:memreshiz, memreslot:memreshit,
      .            memresloe:memreshie, memreslof:memreshif)
 
+     
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable''s axes. 
+
+      INTEGER res_lo_ss(6),
+     .        res_hi_ss(6),
+     .        res_incr (6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
       REAL bad_flag(EF_MAX_ARGS), bad_flag_result
 
 ************************************************************************
@@ -185,26 +167,39 @@
 *                                                                      |
 *                                                                      V
 
-        INTEGER slen
-        CHARACTER str_date*12
-        REAL res
-        INTEGER TM_LENSTR1
+      INTEGER slen, i, j, k, l, m, n
+      CHARACTER str_date*12
+      REAL res
+      INTEGER TM_LENSTR1
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+C  result and arg_1 have same array dimension limits
 
-        CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
-        CALL ef_get_arg_string(id, 1, str_date)
+      DO 100 n=res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+      DO 100 m=res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+      DO 100 l=res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+      DO 100 k=res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+      DO 100 j=res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+      DO 100 i=res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+
+         CALL ef_get_string_arg_element_6d(id, ARG1, arg_1,
+     .                       i, j, k, l, m, n, slen, str_date)
 
 * make it a null-terminated string
-        slen = MIN(TM_LENSTR1(str_date)+1,12)
-        str_date(slen:slen) = CHAR(0)
-
-        CALL DATE_DECODE(str_date, res)
-        IF ( res .EQ. -1E34 ) THEN
-          result(memreslox, memresloy, memresloz,
-     .           memreslot, memresloe, memreslof) = bad_flag_result
-        ELSE
-          result(memreslox, memresloy, memresloz,
-     .           memreslot, memresloe, memreslof) = res
-        ENDIF
+         slen = MIN(TM_LENSTR1(str_date)+1,12)
+         str_date(slen:slen) = CHAR(0)
+
+         CALL DATE_DECODE(str_date, res)
+         IF ( res .EQ. -1E34 ) THEN
+            result(i, j, k, l, m, n) = bad_flag_result
+         ELSE
+            result(i, j, k, l, m, n) = res
+         ENDIF
+
+ 100  CONTINUE
 
 *                                                                      ^
 *                                                                      |
diff --git a/fer/efi/expndi_by_m_counts.F b/fer/efi/expndi_by_m_counts.F
new file mode 100644
index 0000000..ddbc449
--- /dev/null
+++ b/fer/efi/expndi_by_m_counts.F
@@ -0,0 +1,318 @@
+* 
+*  expndi_by_m_counts.F
+* 
+*  Ansley Manke (from expndi_by_z_counts)
+*  4/2014
+* 
+* Expand argument 1 by creating a 2D XE structure from it with the 
+* separation between X rows given by the lengths specified in 
+* argument 2. Argument 2 is a list of length N, where N is the number of 
+* X rows to create, and each item in the list is the length of that 
+* column (the length of the cruise or profile). Thus the X rows created 
+* are "ragged" Typical use is that arg 1 is a collection of vertical casts 
+* appended end-to-end and that arg 2 is the number of values in each cast.
+* The sum of the values in arg 2 is the length of argument 1. 
+
+*  Args 3 and 4 are constants -- the size of the X and E axes, respectively
+ 
+*  In this subroutine we provide information about
+*  the function.  The user configurable information 
+*  consists of the following:
+* 
+*  descr              Text description of the function
+* 
+*  num_args           Required number of arguments
+* 
+*  axis_inheritance   Type of axis for the result
+*                        ( CUSTOM, IMPLIED_BY_Z_ARGS, q, ABSTRACT )
+*                        CUSTOM          - user defined axis
+*                        IMPLIED_BY_Z_ARGS - same axis as the incoming argument
+*                        NORMAL          - the result is normal to this axis
+*                        ABSTRACT        - an axis which only has index values
+* 
+*  piecemeal_ok       For memory optimization:
+*                        axes where calculation may be performed piecemeal
+*                        ( YES, NO )
+* 
+*
+* For each argument we provide the following information:
+*
+* name               Text name for an argument
+*
+* unit               Text units for an argument
+*
+* desc               Text description of an argument
+*
+* axis_influence     Are this argument's axes the same as the result grid?
+*                       ( YES, NO )
+*
+* axis_extend       How much does Ferret need to extend arg limits relative to result 
+*
+
+
+      SUBROUTINE expndi_by_m_counts_init(id)
+
+      INCLUDE 'EF_Util.cmn'
+
+      INTEGER id, arg
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      CALL ef_set_desc(id,
+     .  'Expand arg1 into an XE grid. (split I variable into E-Rows)' )
+
+      CALL ef_set_num_args(id, 3)
+      CALL ef_set_has_vari_args(id, NO)
+      CALL ef_set_axis_inheritance_6d(id, CUSTOM, NORMAL, 
+     .     NORMAL, NORMAL, CUSTOM, NORMAL)
+
+      arg = 1
+      CALL ef_set_arg_name(id, arg, 'dat')
+      CALL ef_set_arg_desc(id, arg, '1-D variable to expand')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+
+      arg = 2
+      CALL ef_set_arg_name(id, arg, 'counts')
+      CALL ef_set_arg_desc(id, arg,
+     .          '1-D list on E axis: count of values in each trajectory')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+
+      arg = 3
+      CALL ef_set_arg_name(id, arg, 'max_row_len')
+      CALL ef_set_arg_desc(id, arg,
+     .          'I size of result (constant)')
+      CALL ef_set_axis_influence_6d(id, arg, NO, NO, NO, NO, NO, NO)
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+ 
+      SUBROUTINE expndi_by_m_counts_custom_axes(id)
+ 
+      IMPLICIT NONE
+      INCLUDE 'EF_Util.cmn'
+ 
+      INTEGER id
+
+      REAL size, ene
+      integer arg, idim, nm
+
+       INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+*
+*     Use utility functions to get context information about the arguments.
+*
+       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+ 
+* output X axis size: Longest feature
+
+      CALL ef_get_one_val(id, ARG3, size)
+      CALL ef_set_custom_axis(id, X_AXIS, 1.0, size, 1.0, 'Obs', NO)
+
+
+* output E axis size: Rowsize
+      arg = 2
+      nm = arg_hi_ss(E_AXIS,arg)-arg_lo_ss(E_AXIS,arg) + 1
+      ene = FLOAT(nm)
+      CALL ef_set_custom_axis(id, E_AXIS, 1., ene, 1., 'Row', NO)
+ 
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+ 
+*
+* In this subroutine we provide information about the lo and hi
+* limits associated with each abstract or custom axis.   The user 
+* configurable information consists of the following:
+*
+* lo_ss               lo subscript for an axis
+*
+* hi_ss               hi subscript for an axis
+*
+
+      SUBROUTINE expndi_by_m_counts_result_limits(id)
+
+      INCLUDE 'EF_Util.cmn'
+
+      INTEGER id
+
+* **********************************************************************
+*                                           USER CONFIGURABLE PORTION |
+*                                                                     |
+*                                                                     V
+
+      REAL size
+      integer nm, arg, idim
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS),
+     .        arg_hi_ss(6,EF_MAX_ARGS),
+     .        arg_incr (6,EF_MAX_ARGS)
+
+*
+*     Use utility functions to get context information about the arguments.
+*
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+
+* output X axis size: Longest feature
+      CALL ef_get_one_val(id, ARG3, size)
+      nm = INT(ABS(size))
+      CALL ef_set_axis_limits(id, X_AXIS, 1, nm)
+
+* output E axis size
+      arg = 1
+      nm = arg_hi_ss(E_AXIS,arg)-arg_lo_ss(E_AXIS,arg) + 1
+      CALL ef_set_axis_limits(id, E_AXIS, 1, nm)
+
+*                                                                     ^
+*                                                                     |
+*                                           USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
+* 
+*  In this subroutine we compute the result
+* 
+      SUBROUTINE expndi_by_m_counts_compute(id, arg_1, arg_2, arg_3, 
+     .                               result)
+
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
+
+      INTEGER id
+
+      REAL bad_flag(EF_MAX_ARGS), bad_flag_result
+      REAL arg_1(mem1lox:mem1hix, mem1loy:mem1hiy,
+     .	   mem1loz:mem1hiz, mem1lot:mem1hit,
+     .	   mem1loe:mem1hie, mem1lof:mem1hif)
+      REAL arg_2(mem2lox:mem2hix, mem2loy:mem2hiy,
+     .     mem2loz:mem2hiz, mem2lot:mem2hit,
+     .	   mem2loe:mem2hie, mem2lof:mem2hif)
+      REAL arg_3(mem3lox:mem3hix, mem3loy:mem3hiy,
+     .     mem3loz:mem3hiz, mem3lot:mem3hit,
+     .	   mem3loe:mem3hie, mem3lof:mem3hif)
+      REAL result(memreslox:memreshix, memresloy:memreshiy,
+     .     memresloz:memreshiz, memreslot:memreshit,
+     .     memresloe:memreshie, memreslof:memreshif)
+
+* After initialization, the 'res_' arrays contain indexing information 
+* for the result axes.  The 'arg_' arrays will contain the indexing 
+* information for each variable's axes. 
+
+      INTEGER res_lo_ss(6), res_hi_ss(6), res_incr(6)
+      INTEGER arg_lo_ss(6,EF_MAX_ARGS), arg_hi_ss(6,EF_MAX_ARGS),
+     .     arg_incr(6,EF_MAX_ARGS)
+
+
+* **********************************************************************
+*                                            USER CONFIGURABLE PORTION |
+*                                                                      |
+*                                                                      V
+
+      INTEGER i,j,k,l,m,n
+      INTEGER i1, j1, k1, l1, m1, n1
+      INTEGER i2, j2, k2, l2, m2, n2
+      INTEGER imax, iout, isum, mmax, mrow, mout
+
+      CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
+      CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
+      CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
+
+* limits on output arrays
+        imax = res_hi_ss(X_AXIS)
+        mmax = res_hi_ss(E_AXIS)
+
+* sum of counts in arg 2 must be length of x-dimension of arg1
+
+      do 20 i2 = arg_lo_ss(X_AXIS,ARG2), arg_hi_ss(X_AXIS,ARG2)
+      do 20 j2 = arg_lo_ss(Y_AXIS,ARG2), arg_hi_ss(Y_AXIS,ARG2)
+      do 20 k2 = arg_lo_ss(Z_AXIS,ARG2), arg_hi_ss(Z_AXIS,ARG2)
+      do 20 L2 = arg_lo_ss(T_AXIS,ARG2), arg_hi_ss(T_AXIS,ARG2)
+      do 20 n2 = arg_lo_ss(F_AXIS,ARG2), arg_hi_ss(F_AXIS,ARG2)
+         isum = 0
+         DO 10 m2 = arg_lo_ss(E_AXIS,ARG2), arg_hi_ss(E_AXIS,ARG2)
+            IF  (arg_2(i2,j2,k2,l2,m2,n2) .EQ. bad_flag(ARG2) .OR. 
+     .           INT(arg_2(i2,j2,k2,l2,m2,n2)) .LT. 0)
+     .          CALL EF_BAIL_OUT(id, 'arg 2 must be non-missing counts GE zero')
+            isum = isum + INT(arg_2(i2,j2,k2,l2,m2,n2))
+ 10   CONTINUE
+         IF (isum .NE. (arg_hi_ss(X_AXIS,ARG1)-arg_lo_ss(X_AXIS,ARG1)+1) )
+     .       CALL EF_BAIL_OUT(id, 
+     .         'arg 2 values (counts) must sum to x-dimension length of of arg1 ')
+ 20   CONTINUE
+
+* pre-fill the entire output result with missing value flags
+*  (since length of each profile may have different number of pts)
+      DO 50 n=res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+      DO 50 m=res_lo_ss(E_AXIS), res_hi_ss(E_AXIS)
+      DO 50 l=res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+      DO 50 j=res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+      DO 50 k=res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+      DO 50 i=res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
+         result(i,j,k,l,m,n) = bad_flag_result
+ 50   CONTINUE
+
+* fill in the points as specified by the counts
+
+      n1 = arg_lo_ss(F_AXIS,ARG1)
+      n2 = arg_lo_ss(F_AXIS,ARG2)
+      DO 400 n=res_lo_ss(F_AXIS), res_hi_ss(F_AXIS)
+
+      l1 = arg_lo_ss(T_AXIS,ARG1)
+      l2 = arg_lo_ss(T_AXIS,ARG2)
+      DO 400 l=res_lo_ss(T_AXIS), res_hi_ss(T_AXIS)
+
+      k1 = arg_lo_ss(Z_AXIS,ARG1)
+      k2 = arg_lo_ss(Z_AXIS,ARG2)
+      DO 400 k=res_lo_ss(Z_AXIS), res_hi_ss(Z_AXIS)
+
+      j1 = arg_lo_ss(Y_AXIS,ARG1)
+      j2 = arg_lo_ss(Y_AXIS,ARG2)
+      DO 400 j=res_lo_ss(Y_AXIS), res_hi_ss(Y_AXIS)
+
+         i1 = arg_lo_ss(X_AXIS,ARG1)
+         i2 = arg_lo_ss(X_AXIS,ARG2)
+
+         m1 = arg_lo_ss(E_AXIS,ARG1)
+         m2 = arg_lo_ss(E_AXIS,ARG2)
+ 
+	    i1 = 1
+            DO 200 mout=arg_lo_ss(E_AXIS,ARG2),arg_hi_ss(E_AXIS,ARG2)
+               DO 100 iout = 1, arg_2(i2,j2,k2,l2,mout,n1)
+                  result(iout,j,k,l,mout,n) = arg_1(i1,j1,k1,l1,m1,n1)
+
+                  i1 = i1 + 1
+ 100           CONTINUE
+ 200        CONTINUE
+
+         j1 = j1 + arg_incr(Y_AXIS,ARG1)
+         j2 = j2 + arg_incr(Y_AXIS,ARG2)
+         k1 = k1 + arg_incr(Z_AXIS,ARG1)
+         k2 = k2 + arg_incr(Z_AXIS,ARG2)
+         l1 = l1 + arg_incr(T_AXIS,ARG1)
+         l2 = l2 + arg_incr(T_AXIS,ARG2)
+         n1 = n1 + arg_incr(F_AXIS,ARG1)
+         n2 = n2 + arg_incr(F_AXIS,ARG2)
+ 400  CONTINUE
+      
+         
+*                                                                      ^
+*                                                                      |
+*                                            USER CONFIGURABLE PORTION |
+* **********************************************************************
+
+      RETURN 
+      END
+
diff --git a/fer/efi/labwid.F b/fer/efi/labwid.F
index 1d1facd..4a17129 100644
--- a/fer/efi/labwid.F
+++ b/fer/efi/labwid.F
@@ -3,7 +3,6 @@
 *
 * Ansley Manke
 * March 1, 2005
-* V68  *acm* 1/12  ifdef double_p for double-precision ferret.
 *
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
@@ -43,6 +42,8 @@
 * function, will be linked internally; but it is convenient to implement
 * it as an external function.
 
+* V68  *acm* 1/12  ifdef double_p for double-precision ferret.
+* V69+  5/14 *acm* Fix for ascii font in multi-line labels, ticket 2176
 
       SUBROUTINE labwid_init(id)
 
@@ -182,8 +183,8 @@
       ht = height
 
       DO 40 n = 1, numlines
-         CALL getlabfonts (strng, lnbeg, lnend, n, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+         CALL getlabfonts (strng, lnbeg, lnend, n, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 
          risc_buff = strng(lnbeg(n):lnend(n))
          xmn = SYMWID(ht,nchr+npen+nfont,
diff --git a/fer/efi/list_value_xml.F b/fer/efi/list_value_xml.F
index 44f3ba3..f96db0b 100644
--- a/fer/efi/list_value_xml.F
+++ b/fer/efi/list_value_xml.F
@@ -4,6 +4,7 @@
 * Ansley Manke
 * May 24, 2011
 * V68  *acm* 1/12  ifdef double_p for double-precision ferret.
+* V691+*acm* 8/14  Fix ticket 2190: long strings were being cut off.
 *
 * This function writes a string value to an xml string, and with a given tag 
 * and option to enclose it in CDATA escape. e.g.
@@ -237,7 +238,6 @@
 *     Get the value (string)
       CALL ef_get_string_arg_element_6d(id, ARG2, arg_2,
      .                                  i,j,k,l,m,n,vlen,value)
-
       i = arg_lo_ss(X_AXIS,ARG3)
       j = arg_lo_ss(Y_AXIS,ARG3)
       k = arg_lo_ss(Z_AXIS,ARG3)
@@ -276,6 +276,7 @@
 	 vlen = TM_LENSTR1(second)
 	 slen = TM_LENSTR1(third)
          outstring = first(1:tlen)//second(1:vlen)//third(1:slen)
+	 vlen = tlen+vlen+slen
       ELSE
          write (first,  1030) tag(1:tlen)
          write (second, 1040) value(1:vlen)
@@ -284,6 +285,7 @@
 	 vlen = TM_LENSTR1(second)
 	 slen = TM_LENSTR1(third)
          outstring = first(1:tlen)//second(1:vlen)//third(1:slen)
+	 vlen = tlen+vlen+slen
       ENDIF
       vlen = TM_LENSTR1(outstring)
 
diff --git a/fer/efi/samplexy_curv.F b/fer/efi/samplexy_curv.F
index d979bad..014ce16 100644
--- a/fer/efi/samplexy_curv.F
+++ b/fer/efi/samplexy_curv.F
@@ -278,11 +278,13 @@
       LOGICAL need_modulo
       REAL ylocations(2)
       REAL xpt, ypt, ydiff, yd, add_xcoord, xadd, xcoord
+      REAL xcoord_diff, xcoordlast, tol
       REAL xptmin, xptmax, xcoordmin, xcoordmax
       REAL fxbot, fxtop, fbb, ftb, fbt, ftt
       REAL xbot, xtop, ybot, ytop
       REAL xfrac, yfrac
       CHARACTER*255 err_msg
+      parameter (tol = 140.)
 
       CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
@@ -462,6 +464,8 @@ C Check that sample x and y are simple lists of points - same length
       DO 700 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
 
 * Find all locations of xpt in arg_2, longitudes of data
+* When a change of sign corresponds with crossing a branch cut, that
+* is not saved as a location where xpt-minus-coordinate changes sign.
 
          xadd = 0.
          xpt = arg_4(i4,j4,k4,l4,m4,n4)
@@ -470,30 +474,34 @@ C Check that sample x and y are simple lists of points - same length
      .      xadd = add_xcoord
 
          nloc = 0
+         i2 = arg_lo_ss(X_AXIS,ARG2)
+	 j2 = arg_lo_ss(Y_AXIS,ARG2)
+	 xcoordlast = arg_2(i2,j2,k2,l2,m2,n2) + xadd
 
          DO 200 j2 = arg_lo_ss(Y_AXIS,ARG2), arg_hi_ss(Y_AXIS,ARG2)
             i2 = arg_lo_ss(X_AXIS,ARG2)
             xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
-c               icross = SIGN(1, (xpt - xcoord) )
             icross = 1
             IF ((xpt - xcoord) .LT. 0.) icross = -1
 
             DO 100 i2 = arg_lo_ss(X_AXIS,ARG2), arg_hi_ss(X_AXIS,ARG2)
                xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
+	       xcoord_diff = ABS(xcoordlast-xcoord)
+	       IF (xcoord_diff .GE. tol) icross = -1*icross
 
-c               iloc = SIGN(1, (xpt-xcoord) )
                iloc = 1
-               IF ((xpt-xcoord) .LT. 0. ) iloc = -1
+
+               IF ((xpt-xcoord) .LT. 0.) iloc = -1
 
                IF (icross .NE. iloc)THEN
                   nloc = nloc + 1
                   xlocations(nloc,1,1,1,1,1) =
      .                       MAX(i2-1,arg_lo_ss(X_AXIS,ARG2))
                   xlocations(nloc,2,1,1,1,1) = j2
-c                  icross = SIGN(1, (xpt - xcoord) )
                   icross = 1
                   IF ((xpt - xcoord) .LT. 0.) icross = -1
                ENDIF
+	       xcoordlast = xcoord 
   100       CONTINUE
 
   200    CONTINUE
diff --git a/fer/efi/samplexy_curv_avg.F b/fer/efi/samplexy_curv_avg.F
index 480e6e7..c016fc2 100644
--- a/fer/efi/samplexy_curv_avg.F
+++ b/fer/efi/samplexy_curv_avg.F
@@ -282,7 +282,9 @@
       REAL fbb, ftb, fbt, ftt
       REAL sum, count
       REAL add_xcoord, xadd, xcoord
+      REAL xcoord_diff, xcoordlast, tol
       CHARACTER*255 err_msg
+      parameter (tol = 140.)
 
       CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
@@ -462,6 +464,8 @@ C Check that sample x and y are simple lists of points - same length
       DO 700 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
 
 * Find all locations of xpt in arg_2, longitudes of data
+* When a change of sign corresponds with crossing a branch cut, that
+* is not saved as a location where xpt-minus-coordinate changes sign.
 
          xadd = 0.
          xpt = arg_4(i4,j4,k4,l4,m4,n4)
@@ -470,18 +474,21 @@ C Check that sample x and y are simple lists of points - same length
      .      xadd = add_xcoord
 
          nloc = 0
+         i2 = arg_lo_ss(X_AXIS,ARG2)
+	 j2 = arg_lo_ss(Y_AXIS,ARG2)
+	 xcoordlast = arg_2(i2,j2,k2,l2,m2,n2) + xadd
 
          DO 200 j2 = arg_lo_ss(Y_AXIS,ARG2), arg_hi_ss(Y_AXIS,ARG2)
             i2 = arg_lo_ss(X_AXIS,ARG2)
             xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
-c               icross = SIGN(1, (xpt - xcoord) )
             icross = 1
             IF ((xpt - xcoord) .LT. 0.) icross = -1
 
             DO 100 i2 = arg_lo_ss(X_AXIS,ARG2), arg_hi_ss(X_AXIS,ARG2)
                xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
+	       xcoord_diff = ABS(xcoordlast-xcoord)
+	       IF (xcoord_diff .GE. tol) icross = -1*icross
 
-c               iloc = SIGN(1, (xpt-xcoord) )
                iloc = 1
                IF ((xpt-xcoord) .LT. 0. ) iloc = -1
 
@@ -490,10 +497,10 @@ c               iloc = SIGN(1, (xpt-xcoord) )
                   xlocations(nloc,1,1,1,1,1) =
      .                       MAX(i2-1,arg_lo_ss(X_AXIS,ARG2))
                   xlocations(nloc,2,1,1,1,1) = j2
-c                  icross = SIGN(1, (xpt - xcoord) )
                   icross = 1
                   IF ((xpt - xcoord) .LT. 0.) icross = -1
                ENDIF
+	       xcoordlast = xcoord 
   100       CONTINUE
 
   200    CONTINUE
diff --git a/fer/efi/samplexy_curv_nrst.F b/fer/efi/samplexy_curv_nrst.F
index 01a3211..94974ee 100644
--- a/fer/efi/samplexy_curv_nrst.F
+++ b/fer/efi/samplexy_curv_nrst.F
@@ -279,9 +279,12 @@
       REAL xpt, ypt, ydiff, yd
       REAL xptmin, xptmax, xcoordmin, xcoordmax
       REAL add_xcoord, xadd, xcoord, sqdd
+      REAL xcoord_diff, xcoordlast, tol
       REAL xval, yval, sqdmin
       CHARACTER*255 err_msg
 
+      parameter (tol = 140.)
+
       CALL ef_get_res_subscripts_6d(id, res_lo_ss, res_hi_ss, res_incr)
       CALL ef_get_arg_subscripts_6d(id, arg_lo_ss, arg_hi_ss, arg_incr)
       CALL ef_get_bad_flags(id, bad_flag, bad_flag_result)
@@ -460,6 +463,8 @@ C Check that sample x and y are simple lists of points - same length
       DO 700 i = res_lo_ss(X_AXIS), res_hi_ss(X_AXIS)
 
 * Find all locations of xpt in arg_2, longitudes of data
+* When a change of sign corresponds with crossing a branch cut, that
+* is not saved as a location where xpt-minus-coordinate changes sign.
 
          xadd = 0.
          xpt = arg_4(i4,j4,k4,l4,m4,n4)
@@ -469,6 +474,10 @@ C Check that sample x and y are simple lists of points - same length
 
          nloc = 0
 
+         i2 = arg_lo_ss(X_AXIS,ARG2)
+	 j2 = arg_lo_ss(Y_AXIS,ARG2)
+	 xcoordlast = arg_2(i2,j2,k2,l2,m2,n2) + xadd
+
          DO 200 j2 = arg_lo_ss(Y_AXIS,ARG2), arg_hi_ss(Y_AXIS,ARG2)
             i2 = arg_lo_ss(X_AXIS,ARG2)
             xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
@@ -477,6 +486,8 @@ C Check that sample x and y are simple lists of points - same length
 
             DO 100 i2 = arg_lo_ss(X_AXIS,ARG2), arg_hi_ss(X_AXIS,ARG2)
                xcoord = arg_2(i2,j2,k2,l2,m2,n2) + xadd
+	       xcoord_diff = ABS(xcoordlast-xcoord)
+	       IF (xcoord_diff.GE.tol) icross = -1*icross
 
                iloc = 1
                IF ((xpt-xcoord) .LT. 0. ) iloc = -1
@@ -489,6 +500,7 @@ C Check that sample x and y are simple lists of points - same length
                   icross = 1
                   IF ((xpt - xcoord) .LT. 0.) icross = -1
                ENDIF
+	       xcoordlast = xcoord 
   100       CONTINUE
 
   200    CONTINUE
diff --git a/external_functions/decimate/separate.F b/fer/efi/separate.F
similarity index 91%
copy from external_functions/decimate/separate.F
copy to fer/efi/separate.F
index 48b3b29..b671aa5 100644
--- a/external_functions/decimate/separate.F
+++ b/fer/efi/separate.F
@@ -75,7 +75,7 @@
       SUBROUTINE separate_init(id)
 
       IMPLICIT NONE
-      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'EF_Util.cmn'
 
       INTEGER id, arg
 
@@ -85,7 +85,7 @@
 *                                                                      V
 
       CALL ef_set_desc(id,
-     . 'Insert a bad-value between features' )
+     . 'Insert a bad-value between features (Discrete Sampling Geometries datasets)' )
 
       CALL ef_set_num_args(id, 3)
       CALL ef_set_has_vari_args(id, NO)
@@ -123,7 +123,7 @@
 
       SUBROUTINE separate_result_limits(id)
 
-      INCLUDE 'ferret_cmn/EF_Util.cmn'
+      INCLUDE 'EF_Util.cmn'
 
       INTEGER id
 
@@ -170,8 +170,8 @@
       SUBROUTINE separate_compute(id, arg_1, arg_2, arg_3, result)
 
       IMPLICIT NONE
-      INCLUDE 'ferret_cmn/EF_Util.cmn'
-      INCLUDE 'ferret_cmn/EF_mem_subsc.cmn'
+      INCLUDE 'EF_Util.cmn'
+      INCLUDE 'EF_mem_subsc.cmn'
 
       INTEGER id
 
@@ -228,16 +228,20 @@
 	 msum = msum + rend
 	 IF (msum .GT. nx) msum = nx+1
 	 DO i = i1, msum
-	    result(ir) = arg_1(i,k,k,k,k,k)
-	    IF (ir.GT.1 .AND. ifix .AND. 
-     .              result(ir ).NE.bad_flag_result .AND. 
-     .              result(ir-1).NE.bad_flag_result) THEN
-	       IF ( result(ir)-result(ir-1) .GT. tol) 
-     .               result(ir) = result(ir) - 360.
-	       IF ( result(ir)-result(ir-1) .LT. -1*tol) 
-     .               result(ir) = result(ir) + 360.
-               
-            ENDIF
+	    IF (arg_1(i,k,k,k,k,k) .NE. bad_flag(ARG1)) THEN
+	       result(ir) = arg_1(i,k,k,k,k,k)
+	       IF (ir.GT.1 .AND. ifix) THEN
+	          IF (result(ir ).NE.bad_flag_result .AND. 
+     .                 result(ir-1).NE.bad_flag_result) THEN
+	             IF ( result(ir)-result(ir-1) .GT. tol) 
+     .                  result(ir) = result(ir) - 360.
+	             IF ( result(ir)-result(ir-1) .LT. -1*tol) 
+     .                  result(ir) = result(ir) + 360.   
+                  ENDIF
+               ENDIF
+	    ELSE
+	       result(ir) = bad_flag_result
+	    ENDIF
 	    ir = ir + 1
 	    IF (ir .GT. res_hi_ss(X_AXIS)) GOTO 9000
 	 ENDDO
diff --git a/fer/gnl/SOURCE_FILES b/fer/gnl/SOURCE_FILES
index 1f75d77..4a0bcf4 100644
--- a/fer/gnl/SOURCE_FILES
+++ b/fer/gnl/SOURCE_FILES
@@ -50,6 +50,7 @@ init_aggregate_dset.F\
 init_journal.F\
 init_memory.F\
 initialize.F\
+isit_const_arr_var.F\
 isit_coord_var.F\
 line_facts.F\
 line_facts_xml.F\
diff --git a/fer/gnl/cdf_list.F b/fer/gnl/cdf_list.F
index 31d67bf..48631ac 100644
--- a/fer/gnl/cdf_list.F
+++ b/fer/gnl/cdf_list.F
@@ -259,7 +259,7 @@
         IF ( status .NE. merr_ok ) GOTO 5800
 
 * update Conventions attribute in the file
-        buff1 = 'CF-1.0'
+        buff1 = 'CF-1.6'
 
         CALL CD_CONVENTIONS_OUT( append, cdfid, buff1, status )
         IF ( status .NE. merr_ok ) GOTO 5800
diff --git a/fer/gnl/get_context_mods.F b/fer/gnl/get_context_mods.F
index 9e752cf..31d21a6 100644
--- a/fer/gnl/get_context_mods.F
+++ b/fer/gnl/get_context_mods.F
@@ -151,6 +151,7 @@
 *		   Detect 'sigma' and 'curvi' automation flags
 *	           Note that errors will be silent in dependency_tree_mode
 *		   Set cx_g_eq_regrid logical (used to be local "regrid_dims")
+* V6.91+ *acm* 8/14 Fix ticket 2189
 
 * specifiers may give coordinate in subscript units (/I,/J,/K,/L) or
 * may give coordinate in "world" units (/X,/Y,/Z,/T)
@@ -295,6 +296,11 @@
 	         IF (  text_buff( istart+1:istart+1 ) .NE. ' '
      .	         .AND. text_buff( istart+1:istart+1 ) .NE. '='
      .	         .AND. text_buff( istart+1:istart+1 ) .NE. tab ) GOTO 50
+* We just want to go on if there is a grave-accent expression, e.g. 
+*  `var,r=dsetnum` inside the "d="
+                 do ii = istart+2,iend
+	            IF (  text_buff(ii:ii) .EQ. '`') GOTO 50
+		 enddo
 !	      ENDIF
 * ... D=data_set given
 	      equal_pos = ATOM_POS( text_buff(istart:iend), '=' )
diff --git a/fer/ef_utility/ef_get_string_arg_element_sub.F b/fer/gnl/isit_const_arr_var.F
similarity index 65%
copy from fer/ef_utility/ef_get_string_arg_element_sub.F
copy to fer/gnl/isit_const_arr_var.F
index 3f4bc5f..50eb139 100644
--- a/fer/ef_utility/ef_get_string_arg_element_sub.F
+++ b/fer/gnl/isit_const_arr_var.F
@@ -1,7 +1,5 @@
-* ef_get_string_arg_element_sub.F
-*
-*  acm 12/03  from ef_get_arg_string
-*
+      SUBROUTINE ISIT_CONST_ARR_VAR ( cx, const_arr_var, status )
+
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
 *  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
@@ -34,30 +32,45 @@
 *  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
-* This returns an element of the string array which was passed as an argument
-* to the function.  
-*
-* Inside this subroutine arg is an array of pointers (cast as real*8),
-* and we can call GET_STRING_ELEMENT to get a string element.
-*
-*       3/12 *kms* Added E and F dimensions
+      
+* See if the expression is a constant-array variable.  Only checks the
+* simple definition of the variable, not a full-on Ferret parsing of the
+* variable and handling as a stack.
+
+* 9/2014 for ticket 981
+
+        INCLUDE	'ferret.parm'
+	INCLUDE 'errmsg.parm'
+	include 'tmap_dims.parm'
+	include	'interp_stack.parm'
+	include	'xvariables.cmn'
+	include	'xcontext.cmn'
+	include	'xprog_state.cmn'
+
+* calling argument declarations
+      LOGICAL const_arr_var
+      INTEGER cx, status
+
+* local variable declarations
+
+      INTEGER cat, var, lo_isp, item, itype
+      CHARACTER*128 buff
+   
+      const_arr_var = .FALSE.
+
+      cat = cx_category( cx )
+      var = cx_variable( cx )
 
-      SUBROUTINE EF_GET_STRING_ARG_ELEMENT_SUB( lox, hix, loy, hiy,
-     .                  loz, hiz, lot, hit, loe, hie, lof, hif, arg,
-     .                  i, j, k, l, m, n, max_line_len, slen, text )
+      IF (cat .EQ. cat_const_var) const_arr_var = .TRUE.
 
-      INTEGER i, j, k, l, m, n,
-     .        lox, hix, loy, hiy, loz, hiz, 
-     .        lot, hit, loe, hie, lof, hif,
-     .        slen, max_line_len
-      CHARACTER*(*) text
-      REAL*8 arg(lox:hix, loy:hiy, loz:hiz, lot:hit, loe:hie, lof:hif)
+      IF (cat .EQ. cat_user_var) THEN 
 
-      CHARACTER GET_STRING_ELEMENT*512
+        DO item = 1, uvar_num_items( var )
+	   itype = uvar_item_type ( item, var )
+	   IF (itype .EQ. alg_const_var) const_arr_var = .TRUE.
+	ENDDO
 
-      text = GET_STRING_ELEMENT(lox, hix, loy, hiy, loz, hiz,
-     .                          lot, hit, loe, hie, lof, hif, arg,
-     .                          i, j, k, l, m, n, max_line_len, slen)
+      ENDIF
 
       RETURN
       END
diff --git a/fer/gnl/list_cmnd_data.F b/fer/gnl/list_cmnd_data.F
index 8371d3f..ff387bb 100644
--- a/fer/gnl/list_cmnd_data.F
+++ b/fer/gnl/list_cmnd_data.F
@@ -87,6 +87,7 @@
 *                    start each row labelling the coordinate values. (bug 1273)
 * V650: *acm* 2/10 - Clean up line with coordinates on listings with tabs/commas
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V691+ *acm* 9/14 Ticket 2199: for string variables don't list a BAD FLAG in the header.
 
 	include 'tmap_dims.parm'
 #	include "tmap_dset.parm"
@@ -268,6 +269,7 @@
 	     line_buff = ' '
 	     WRITE ( line_buff, '(1PG14.7)' ) cx_bad_data(cx)
 	     line_buff = TM_FMT(cx_bad_data(cx),prec_digits,16,vlen)
+	     IF (itsa_string) line_buff = ' '
 	     CALL SPLIT_LIST( pttmode_explct, list_lun,
      .			'             BAD FLAG : '//
      .		        line_buff, 38 )
diff --git a/fer/gnl/list_multi_sub.F b/fer/gnl/list_multi_sub.F
index acd704f..6ab7852 100644
--- a/fer/gnl/list_multi_sub.F
+++ b/fer/gnl/list_multi_sub.F
@@ -84,6 +84,7 @@
 *                    is that they'll be read into some other software e.g.
 *                    spreadsheets, so the user wants the missing flags in there.
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V691+ *acm* 9/14 Ticket 2199: for string variables don't list a BAD FLAG in the header.
 
 	include 'tmap_dims.parm'
 #	include "tmap_dset.parm"
@@ -352,7 +353,9 @@
 
 	   bad_buff = ' '
 	   blen = 1
-           IF (do_comma_del .OR. do_tab_del) THEN
+! do not write a bad-flag notation for string variables.
+           IF ((do_comma_del .OR. do_tab_del) .AND. 
+     .         (mr_type(mr_list(ivar)) .NE. ptype_string)) THEN
              bad_buff = '   BAD FLAG : '// 
      .                  TM_FMT(bad(ivar),prec_digits,16,blen)
              blen = blen + 14
diff --git a/fer/gnl/repl_exprns.F b/fer/gnl/repl_exprns.F
index 8896bdc..d26b022 100644
--- a/fer/gnl/repl_exprns.F
+++ b/fer/gnl/repl_exprns.F
@@ -105,6 +105,10 @@
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
 * V684 *acm* 12/12 Add data type of DOUBLE for return=dtype
 * V685 *sh*  11/13 Add return=status and return=ready
+* V69+ *acm*  9/14 Ticket 2197. After return=status and return=ready need to unset the
+*                  flag dependency_tree_mode to turn regular error reporting back on.
+* V69+ *acm*  9/14 Ticket 981. If the variable is a constant-array, evaluate it to get
+*                  the grid size rather than returning the nominal length.
 
 #include "netcdf.inc"
 	include 'tmap_dims.parm'
@@ -134,14 +138,14 @@
 
 * internal variable declarations:
 	LOGICAL   need_formatting, zero_fill, coordvar,
-     .            do_err, do_eval, get_ready
+     .            do_err, do_eval, get_ready, was_dep, const_arr_var
 	INTEGER   CGRID_SIZE, CGRID_AXIS, TM_LENSTR1, CX_DIM_LEN,
      .		  FIND_DSET_NUMBER, str_len, lenbuff, iend, itmp, axis,
      .		  mr, cx, mr_temp, i, i2, use_digits, true_end,
      .		  qual_end, brkt, idim, use_width, dset, varid, 
      .            vartype, nvdims, vdims(8), nvatts, ist, ind,
      .            attype, attlen, inxt, attoutflag,outflag, fertype, 
-     .            attid, ieq, dqote, base_isp, base_cx
+     .            attid, ieq, dqote, base_isp, base_cx, cat, var
 	REAL	  result, val
 	REAL*8 TM_WORLD, TM_WW_AXLEN, ww
 	CHARACTER TM_FMT*18, LEFINT*16, VAR_TITLE*(max_len),
@@ -344,6 +348,7 @@
 	      get_ready = repl(1:4) .EQ. 'ISRE'
 	      CALL GET_DEPENDENCY_STATUS(memory, cmnd(istart:iend),
      .					 repl, str_len, status) 
+	      CALL EXIT_DEPENDENCY_MODE
               IF (status.NE. ferr_ok) GOTO 5050
 	      IF (get_ready) THEN
 *  return=READY gives merely a 1 or 0 
@@ -378,6 +383,7 @@
 
                  cx = is_cx(1)	! always comes back as the first context
 
+
 * ... if the result has any axes with unknown limits then we have to do a
 *	full evaluation. This happens (only?) from grid-changing fcns that
 *	return ABSTRACT axes, on which limits may depend on data values
@@ -397,6 +403,13 @@
  190	         CONTINUE
               ENDIF  ! `d=1,return=varnames`
 
+* If it's a constant-array variable, we'd like to return its actual size, not the
+* nominal length of the abstract axis. This should not be a performance problem.
+
+              CALL ISIT_CONST_ARR_VAR ( cx, const_arr_var, status )
+              IF (const_arr_var) CALL EVAL_EXPR ( memory, cx_last,
+     .		                     cmnd(istart:iend), apply_cx, status )
+
 	   ENDIF
 * ... RETURN= information request: "repl" contains the keyword
 *     Add to this error string when adding new arguments:
@@ -816,8 +829,10 @@
            lencmnd = lencmnd - ((true_end-istart+3) - str_len)
         ENDIF
 
+
 * successful translation of a grave-accented expression
  1000	did_sub = .TRUE.
+
 	RETURN
 
 * error exits
diff --git a/fer/gnl/sample.F b/fer/gnl/sample.F
index 7f79b67..660f651 100644
--- a/fer/gnl/sample.F
+++ b/fer/gnl/sample.F
@@ -73,6 +73,7 @@
 * v552  4/03 *acm* up VAR_TRANS to 150 characters (variables are up to 128, plus
 *                  space for the transformation specifier)
 *       *acm* 3/12 6D Ferret (common uses nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
 	include 'tmap_dims.parm'
 	include 'ferret.parm'
@@ -96,7 +97,7 @@
      .		TM_HAS_STRING
 	INTEGER	TM_LENSTR1, CGRID_SIZE, STR_UPCASE,
      .		CX_DIM_LEN,
-     .		mblk1, nblks, col_mblk1, col_nblks, slen,
+     .		mblk1, nblks, grid_blocks, col_mblk1, col_nblks, slen,
      .		ssorww(4), out_lun,
      .		i, flen, fmlen, npts, cx, ndim, dim(4), cxpts(2:5)
 	REAL	missing
@@ -138,17 +139,17 @@
 
 * Decode the specification of subscript or world coordinate
 * /OPT2 = "C" (all coordinates) or "I" (all indices) or "CCIN", ...
-	DO 200 i = 1, 4
+	DO 200 i = 1, nferdims
  200	ssorww(i) = by_ww			! default to "C"
 	IF ( opt2_string .NE. ' ' ) THEN
 	   i = STR_UPCASE( opt2_string, opt2_string )
 	   slen = TM_LENSTR1( opt2_string )
 	   IF ( slen.NE.1 .AND. slen.NE.4 ) GOTO 5400
 	   IF ( slen.EQ.1 ) THEN     ! replicate single char shorthand
-	      DO 210 i = 2, 4
+	      DO 210 i = 2, nferdims
  210	      opt2_string(i:i) = opt2_string(1:1)
 	   ENDIF
-	   DO 220 i = 1, 4
+	   DO 220 i = 1, nferdims
 	      IF ( opt2_string(i:i) .EQ. 'C' ) THEN
 	         ssorww(i) = by_ww
 	      ELSEIF ( opt2_string(i:i) .EQ. 'I' ) THEN
@@ -170,13 +171,13 @@
 * make sure the field of data provided doesn't create ambiguities on the
 * unsampled axes  (i.e. multiple points provided but no sampling coordinates)
 	cx = cx_list(1)
-	DO 300 i = 1, 4
+	DO 300 i = 1, nferdims
 	   IF ( ssorww(i) .EQ. by_nothin
      .	   .AND. CX_DIM_LEN(i, cx) .GT. 1 ) GOTO 5500
  300	CONTINUE	
 
 * make sure there is no attempt to sample on a normal axis
-	DO 400 i = 1, 4
+	DO 400 i = 1, nferdims
 	   IF ( ssorww(i) .NE. by_nothin
      .	   .AND. cx_lo_ss(cx,i) .EQ. unspecified_int4 ) GOTO 5700
  400	CONTINUE	
@@ -197,13 +198,20 @@
 	flen = TM_LENSTR1( fname )
 	fmlen = TM_LENSTR1( fmt )
 
-* allocate memory for consolidated 4D coordinates
-	CALL GET_MEMORY( npts*4, mblk1, nblks, status )
+* allocate memory for consolidated 6D coordinates
+
+
+* COMPUTE # BLOCKS NEEDED
+ 
+	grid_blocks = ( npts*nferdims + mem_blk_size - 1 ) / mem_blk_size
+
+	CALL GET_MEMORY( npts*nferdims, grid_blocks, mblk1, nblks, status )
 	IF ( status .NE. ferr_ok ) GOTO 5000
 
 * allocate memory for output record buffer if needed
 	IF ( columns .GT. 0 ) THEN
-	   CALL GET_MEMORY( columns, col_mblk1, col_nblks, status )
+	   grid_blocks = ( columns + mem_blk_size - 1 ) / mem_blk_size
+	   CALL GET_MEMORY( columns, grid_blocks, col_mblk1, col_nblks, status )
 	   IF ( status .NE. ferr_ok ) GOTO 5000
 	ELSE
 	   col_mblk1 = 1	! dummy, unused
diff --git a/fer/gnl/set_var.F b/fer/gnl/set_var.F
index 4ba5330..9e1bddd 100644
--- a/fer/gnl/set_var.F
+++ b/fer/gnl/set_var.F
@@ -82,6 +82,7 @@
 * V683 8/12  *acm* Move writing of notes about output precision to cdf_list.F
 * V685 *acm*  3/13 For Ensemble aggregations, call the ds_type 'ENS'
 * V690 *sh* 1/14   Added SET VARIABLE/SIGMA=varname
+* V690 *acm*  3/14 Fix ticket 2152, error messages on illegal SET VAR/NAME
 
 	include 'tmap_dims.parm'
 #	include "tmap_dset.parm"
@@ -667,7 +668,9 @@
      .               'illegal new name given for '
      .			//risc_buff(:len_rbuff),
      .               						*5000 )
- 5400	IF (dset .GT. 0) THEN
+ 5400	CALL PARSE_NAM_DSET( newname, cx_last, dset,
+     .			     cat, var, mod_cx, status )
+	IF (cat .EQ. cat_file_var) THEN
            CALL ERRMSG( ferr_invalid_command, status,
      .               'illegal new name.  Variable '
      .			//newname_lc(:len_rbuff)//' exists in dataset ',
diff --git a/fer/gnl/show_1_function.F b/fer/gnl/show_1_function.F
index 598678b..fda705a 100644
--- a/fer/gnl/show_1_function.F
+++ b/fer/gnl/show_1_function.F
@@ -265,6 +265,8 @@
 	   ENDIF
 	   IF (itype .EQ. parg_type_string) THEN
 	       risc_buff = risc_buff(:ll) // ' (STRING)'
+	   ELSE
+	       IF (detail) risc_buff = risc_buff(:ll) // ' (FLOAT)'
 	   ENDIF
 	   ll = TM_LENSTR1(risc_buff)
 
diff --git a/fer/gnl/show_1_pyvar.F b/fer/gnl/show_1_pyvar.F
index a38d195..2fe5c41 100644
--- a/fer/gnl/show_1_pyvar.F
+++ b/fer/gnl/show_1_pyvar.F
@@ -59,8 +59,8 @@
 
 * local variables
       CHARACTER*256 myline
-      CHARACTER*17  axstr(4), fltstr
-      INTEGER       j, k, q, starti(4), grid, listdims
+      CHARACTER*17  axstr(nferdims), fltstr
+      INTEGER       j, k, q, starti(nferdims), grid, listdims
       REAL*8        lo, hi
 
       listdims = nferdims
diff --git a/fer/gnl/show_data.F b/fer/gnl/show_data.F
index ad81467..c4bce01 100644
--- a/fer/gnl/show_data.F
+++ b/fer/gnl/show_data.F
@@ -39,6 +39,7 @@
 * V6.8  acm  6/12 Implement mode_6d_lab, set by default. If canceled, the 
 *                 various SHOW commnands will not list info for E,F dimensions.
 * V685 4/13 *acm* Ability to define ensemble with /HIDDEN
+* V691+ 8/14 *acm* Fix ticket 2194: SHOW with /OUTFILE
 
 	include 'tmap_dims.parm'
 #	include "tmap_dset.parm"
@@ -190,7 +191,7 @@
 	      IF ( .NOT.sbrief ) CALL SHOW_DATA_SET_VARS
      .                             (show_lun, iset, svars, status)
 	      IF ( sfile       ) CALL SHOW_DATA_FILES      
-     .                             (ttout_lun, iset)
+     .                             (show_lun, iset)
 	      IF ( sattr       ) CALL SHOW_DATA_SET_ATTRS      
      .                             (show_lun, iset)
            ENDIF
diff --git a/fer/gnl/show_grid.F b/fer/gnl/show_grid.F
index 8f974c4..2017e2c 100644
--- a/fer/gnl/show_grid.F
+++ b/fer/gnl/show_grid.F
@@ -67,6 +67,7 @@
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
 * V6.8  acm  6/12 Implement mode_6d_lab, set by default. If canceled, the 
 *                 various SHOW commnands will not list info for E,F dimensions.
+* V691+ 8/14 *acm* Fix ticket 2194: SHOW with /OUTFILE and not /XML. 
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -99,9 +100,9 @@
 * list and describe the axes of the grid
 	risc_buff = ' '
 	WRITE ( risc_buff, 3000 )
-	CALL SPLIT_LIST(pttmode_explct, ttout_lun, risc_buff, 0)
+	CALL SPLIT_LIST(pttmode_explct, show_lun, risc_buff, 0)
 	DO 110 idim = 1, listdims
-	   CALL LINE_FACTS( ttout_lun, idim, grid, idim )
+	   CALL LINE_FACTS( show_lun, idim, grid, idim )
  110	CONTINUE
 
 * list the data on any axis that has been especially requested
diff --git a/fer/ino/init_ez_dset.F b/fer/ino/init_ez_dset.F
index a66de8e..c3133c0 100644
--- a/fer/ino/init_ez_dset.F
+++ b/fer/ino/init_ez_dset.F
@@ -74,6 +74,8 @@
 * V68  *acm* 1/12  ifdef double_p for double-precision ferret.
 *       *acm* 3/12 cleanup old VMS ifdef
 * V687  2.14 *acm* fix ticket 2144: Make buffer for list of varnames longer
+* V692  7/14 *acm* fix ticket 2182: For ez datasets opened w/o a grid spec, 
+*                  count the records and define an axis
 
 	include 'tmap_dims.parm'
 #	include "tmap_dset.parm"
@@ -99,10 +101,11 @@
 	LOGICAL         have_type
 	INTEGER		TM_LENSTR1, TM_DSET_NUMBER, GRID_FROM_NAME,
      .			tmap_status, loc, skip, grid, columns,
-     .			order(nferdimsp1), idim, s1, slen, ndigits
-	CHARACTER	TM_INQ_PATH*2048, var_list*2048,
+     .			order(nferdimsp1), idim, s1, slen, ndigits, nread,
+     .                  ndims, nvars, ngatts, recdim
+	CHARACTER	TM_INQ_PATH*2048, TM_FMT*12, var_list*2048,
      .			path_name*2048, ezform*80, title*128, grid_name*64,
-     .			type*2048, ctype*16, delim*24
+     .			type*2048, ctype*16, delim*24, buff*20
 	REAL		rval
 
 * local parameter declarations
@@ -305,9 +308,31 @@
            IF ( status .NE. ferr_ok ) RETURN
 	   IF ( .NOT.VALID_GRID( grid ) ) GOTO 5500
 	ELSEIF ( .NOT.already_init ) THEN
-* ... insert the default defining grid
-	   have_mods = .TRUE.
-	   grid = mgrid_ez_dflt
+
+* ... insert the default defining grid for STREAM
+	   if (ezform(:3) .EQ. 'STR') then
+	      have_mods = .TRUE.
+	      grid = mgrid_ez_dflt
+	   ELSE
+
+* ... For ascii and unformatted sets, get the datset count and define a 
+*     basic x axis, not the ez abstract axis
+	      CALL EZ_COUNT_DSET ( dset, ezform, nread, status )
+              IF ( status .NE. ferr_ok ) RETURN
+
+	      IF (columns .GT. 1) THEN
+	         CALL CD_GET_DS_INFO (dset, ndims, nvars, ngatts,
+     .            recdim, status)
+                 nread = nread*columns/nvars
+	      ENDIF
+
+	      buff = TM_FMT(FLOAT(nread), 10, 12, slen)
+	      grid_name = 'X[GX=1:'//buff(:slen)//':1]'
+	      grid = GRID_FROM_NAME( grid_name, cx_last, status )
+              IF ( status .NE. ferr_ok ) RETURN
+	      IF ( .NOT.VALID_GRID( grid ) ) GOTO 5500
+	      have_mods = .TRUE.
+	   endif
 	ELSE
 	   grid = int4_init
 	ENDIF
diff --git a/fer/ino/var_ss_lims.F b/fer/ino/var_ss_lims.F
index 03a158f..84a5ebc 100644
--- a/fer/ino/var_ss_lims.F
+++ b/fer/ino/var_ss_lims.F
@@ -101,12 +101,12 @@
 	ENDIF
 
 * return subscript limits
-        IF ( cat .EQ. cat_file_var ) THEN
-           lo_ss = ds_grid_start(idim, var)
-           hi_ss = ds_grid_end  (idim, var)
-        ELSE
+        IF ( cat .EQ. cat_pystat_var ) THEN
            lo_ss = pyvar_grid_start(idim, var)
            hi_ss = pyvar_grid_end  (idim, var)
+        ELSE
+           lo_ss = ds_grid_start(idim, var)
+           hi_ss = ds_grid_end  (idim, var)
         ENDIF
         RETURN
 
diff --git a/fer/mem/SOURCE_FILES b/fer/mem/SOURCE_FILES
index 2dafa4c..bcf45dd 100644
--- a/fer/mem/SOURCE_FILES
+++ b/fer/mem/SOURCE_FILES
@@ -49,6 +49,7 @@ purge_mr_grid.F\
 purge_pystat_var.F\
 purge_pystat_dset_vars.F\
 purge_user_var.F\
+r_cgrid_size_delta.F\
 re_assign_variable.F\
 release_work_spc.F\
 un_cache.F\
diff --git a/fer/mem/assign_mr_cx.F b/fer/mem/assign_mr_cx.F
index 3b846da..bb9f390 100644
--- a/fer/mem/assign_mr_cx.F
+++ b/fer/mem/assign_mr_cx.F
@@ -43,6 +43,7 @@
 * V530:  6/01 *sh* save the delta value, too
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
 * V685+ 10/13 *sh* added auxiliary regridding "aux" variables
+* V692 7/14 *acm* ticket 2183: handle @WGT transform as for integrals
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -89,6 +90,8 @@
 *      (e.g. DEFINE UAVE = U[K=1:3 at AVE])
 
 	   IF ( (trans .EQ. trans_integ_indef) .OR.
+     .          (trans .EQ. trans_avg_wgt) .OR.
+     .          (trans .EQ. trans_4d_avg_wgt) .OR.
      .          ( (trans .GT. trans_compress_code) .AND.
      .            (trans .NE. trans_max) .AND.
      .            (trans .NE. trans_min) ) .OR.
diff --git a/fer/mem/create_mem_var.F b/fer/mem/create_mem_var.F
index cf2e7dc..54f930a 100644
--- a/fer/mem/create_mem_var.F
+++ b/fer/mem/create_mem_var.F
@@ -46,6 +46,7 @@
 * V533   6/01 *sh* - use CGRID_SIZE_DELTA to allow mem vars with delta values
 * V68  *acm* 1/12  ifdef double_p for double-precision ferret.
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -59,19 +60,27 @@
 
 * internal variable declarations:
 	INTEGER	CGRID_SIZE_DELTA,
-     .		grid_size, start_block, num_blocks
+     .		grid_size, start_block, num_blocks, num_slen, grid_blocks
+	REAL	R_CGRID_SIZE_DELTA, rgrid_size
+	CHARACTER  LEFINT*12, num_str*12
 
 * amount of storage space required
-	grid_size = CGRID_SIZE_DELTA( cx )
+* Compute as a real - grid sizes may overflow integer storage.
+
+	rgrid_size = R_CGRID_SIZE_DELTA( cx )  ! as a real
+
 * ... note: later we will want an array of word sizes indexed by type
 #ifdef double_p
-	IF (cx_type(cx) .EQ. ptype_string) grid_size = grid_size
+	IF (cx_type(cx) .EQ. ptype_string) rgrid_size = rgrid_size
 #else
-	IF (cx_type(cx) .EQ. ptype_string) grid_size = grid_size*2 ! 8 byte ptr
+	IF (cx_type(cx) .EQ. ptype_string) rgrid_size = rgrid_size*2 ! 8 byte ptr
 #endif
 
+* COMPUTE # BLOCKS NEEDED
+	grid_blocks = INT( ( rgrid_size + mem_blk_size - 1 ) / mem_blk_size )
+
 * claim the storage space
-	CALL GET_MEMORY( grid_size, start_block, num_blocks, status )
+	CALL GET_MEMORY( INT(rgrid_size), grid_blocks, start_block, num_blocks, status )
 	IF ( status .NE. ferr_ok ) RETURN
 
 * catalog it in the memory variable table
@@ -84,4 +93,14 @@
 	IF ( status .NE. ferr_ok ) RETURN
 
 	RETURN
+
+5100	CONTINUE
+	num_str = LEFINT(INT((rgrid_size+0.99999E6)/1.0E6),num_slen)
+	CALL ERRMSG( ferr_insuff_memory,status,
+     .    num_str(:num_slen)//' Mwords were requested. ', *5130)
+5130    CALL WARN('You can use SET MEMORY/SIZE=xxx to increase memory.')
+	CALL WARN('The "Memory use" section of the FERRET '
+     .              //'Users Guide has further tips.') 
+
+	RETURN
 	END
diff --git a/fer/mem/create_temp_mem_var.F b/fer/mem/create_temp_mem_var.F
index 961c4ec..ee9753e 100644
--- a/fer/mem/create_temp_mem_var.F
+++ b/fer/mem/create_temp_mem_var.F
@@ -47,6 +47,7 @@
 * V533   6/01 *sh* - use CGRID_SIZE_DELTA to allow mem vars with delta values
 * V68  *acm* 1/12  ifdef double_p for double-precision ferret.
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -60,19 +61,27 @@
 
 * internal variable declarations:
 	INTEGER	CGRID_SIZE_DELTA,
-     .		grid_size, start_block, num_blocks
+     .		grid_size, start_block, num_blocks, grid_blocks
+	REAL R_CGRID_SIZE_DELTA, rgrid_size
 
 * amount of storage space required
-	grid_size = CGRID_SIZE_DELTA( cx )
+* Compute as a real - grid sizes may overflow integer storage.
+
+	rgrid_size = R_CGRID_SIZE_DELTA( cx )  ! as a real
+
 * ... note: later we will want an array of word sizes indexed by type
 #ifdef double_p
-	IF (cx_type(cx) .EQ. ptype_string) grid_size = grid_size
+	IF (cx_type(cx) .EQ. ptype_string) rgrid_size = rgrid_size
 #else
-	IF (cx_type(cx) .EQ. ptype_string) grid_size = grid_size*2 ! 8 byte ptr
+	IF (cx_type(cx) .EQ. ptype_string) rgrid_size = rgrid_size*2 ! 8 byte ptr
 #endif
 
 * claim the storage space
-	CALL GET_MEMORY( grid_size, start_block, num_blocks, status )
+
+* COMPUTE # BLOCKS NEEDED
+	grid_blocks = ( INT(rgrid_size) + mem_blk_size - 1 ) / mem_blk_size
+
+	CALL GET_MEMORY( INT(rgrid_size), grid_blocks, start_block, num_blocks, status )
 	IF ( status .NE. ferr_ok ) RETURN
 
 * catalog it in the memory variable table
diff --git a/fer/mem/find_mem_var.F b/fer/mem/find_mem_var.F
index b32081d..4e6aa35 100644
--- a/fer/mem/find_mem_var.F
+++ b/fer/mem/find_mem_var.F
@@ -74,6 +74,7 @@
 *		  - check that the delta value matches
 * 2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
 * V685 4/13-3/14 *sh* support for auxiliary variables used in regridding
+* V692 7/14 *acm* ticket 2183: handle @WGT transform as for integrals
 
 * (V510) How on cache hits on external functions (EFs) work:
 * uvar_given is used to encapsulate information about cache reuse for EF
@@ -276,7 +277,9 @@
 	IF ( has_trans ) THEN
 	   DO 70 idim = 1, nferdims
 	      IF ( normal(idim) ) GOTO 70
-	      IF ( cx_trans( idim, cx ) .EQ. trans_integ_indef ) THEN
+	      IF ( cx_trans( idim, cx ) .EQ. trans_integ_indef .OR. 
+     .             cx_trans( idim, cx ) .EQ. trans_avg_wgt .OR. 
+     .             cx_trans( idim, cx ) .EQ. trans_4d_avg_wgt) THEN
 	         IF ( mr_lo_ww(idim,mv).NE.cx_lo_ww(idim,cx) ) GOTO 100
                  IF ( mr_hi_ww(idim,mv).NE.cx_hi_ww(idim,cx) ) THEN
                     ww_hi_bound = TM_WORLD( cx_hi_ss(cx,idim),
diff --git a/fer/mem/get_memory.F b/fer/mem/get_memory.F
index a494313..ad7d223 100644
--- a/fer/mem/get_memory.F
+++ b/fer/mem/get_memory.F
@@ -1,4 +1,4 @@
-	SUBROUTINE GET_MEMORY ( num_words, mblk, num_blocks, status )
+	SUBROUTINE GET_MEMORY ( num_words, grid_blocks, mblk, num_blocks, status )
 
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
@@ -33,7 +33,7 @@
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
 *
-* find and reserve a section of contiguous memory sufficient to hold num_words 
+* find and reserve a section of contiguous memory sufficient to hold grid_blocks 
 * procedure:
 * first check the list of free memory regions to see if there is one big enough
 * if not then delete variables working from the tail of the priority chain
@@ -60,6 +60,7 @@
 *		     of error statement
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
 * V685 *acm*  6/13 Increase nominal length of abstract axis
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -68,18 +69,15 @@
 	include 'xvariables.cmn'
 
 * calling argument declarations:
-	INTEGER	num_words, mblk, num_blocks, status
+	INTEGER	num_words, grid_blocks, mblk, num_blocks, status
 
 * internal variable declarations:
 	INTEGER	mr, next, prev, size, new_mblk, num_slen
+	REAL	rgrid_blocks
 	CHARACTER  LEFINT*12, num_str*12
 
-* Number of words reasonable?
-	if (num_words .lt. 0) goto 5200
-	   
-
-* COMPUTE # BLOCKS NEEDED
-	num_blocks = ( num_words + mem_blk_size - 1 ) / mem_blk_size
+* Check for unspecified limits on abstract axis
+	IF ( num_words .EQ. 99999999 ) GOTO 5100
 
 * LOOK FOR A MEMORY REGION ALREADY AVAILABLE
 * ... use linked list into free memory regions
@@ -90,7 +88,7 @@
 
 * ... another region to check out - is it big enough ?
 	size = mblk_size ( mblk )
-	IF ( size .LT. num_blocks ) THEN
+	IF ( size .LT. grid_blocks ) THEN
 	   mblk = mblk_flink( mblk )
 	   GOTO 100
 	ELSE
@@ -100,10 +98,10 @@
 * NOTHING BIG ENOUGH IS AVAILABLE AT PRESENT
 * delete from tail of deletion priority chain looking for something big enough
  200	mr = mr_del_blink(0)
-	IF ( mr .EQ. 0 ) GOTO 5100
+	IF ( mr .EQ. 0 ) GOTO 5200
 	CALL DELETE_VARIABLE( mr )
 	size = mr_del_last_size
-	IF ( size .LT. num_blocks ) THEN
+	IF ( size .LT. grid_blocks ) THEN
 	   GOTO 200
 	ELSE
 	   mblk = mr_del_last_mblk
@@ -113,22 +111,23 @@
  500	prev = mblk_blink( mblk )
 	next = mblk_flink( mblk )
 
-	IF ( size .EQ. num_blocks ) THEN
+	IF ( size .EQ. grid_blocks ) THEN
 * ... perfect size - remove it from the free list
 	   mblk_flink( prev ) = next
 	   mblk_blink( next ) = prev
 
 	ELSE
 * ... unnecessarily big - bite off only what we need
-	   new_mblk = mblk + num_blocks
+	   new_mblk = mblk + grid_blocks
 	   mblk_flink( new_mblk ) = next
 	   mblk_blink( new_mblk ) = prev
-	   mblk_size ( new_mblk ) = size - num_blocks
+	   mblk_size ( new_mblk ) = size - grid_blocks
 	   mblk_flink( prev )     = new_mblk
 	   mblk_blink( next )     = new_mblk
 	ENDIF
 
 * success - set up the requested region and give it to them
+        num_blocks = grid_blocks
 	mblk_size ( mblk ) = num_blocks
 	status = ferr_ok
 
@@ -136,25 +135,22 @@
 	mblk_blink( mblk ) = unspecified_int4	! temp diag
 
  5000	RETURN
- 5100	CONTINUE
-	IF ( num_words .EQ. 99999999 ) THEN
-          num_str = LEFINT(num_words,num_slen)
-	  CALL ERRMSG( ferr_dim_underspec, status,
-     .	  num_str(:num_slen)//' words were requested. ', *5125)
- 5125	  CALL WARN('Check for unspecified limits on an ABSTRACT axis')
-          CALL WARN('Use the SHOW GRID command to see the axes')
-	ELSE
-          num_str = LEFINT(INT((num_words+0.99999E6)/1.0E6),num_slen)
-	  CALL ERRMSG( ferr_insuff_memory,status,
+ 5100	num_str = LEFINT(num_words,num_slen)
+	CALL ERRMSG( ferr_dim_underspec, status,
+     .    num_str(:num_slen)//' words were requested. ', *5105)
+ 5105	CALL WARN('Check for unspecified limits on an ABSTRACT axis')
+	CALL WARN('Use the SHOW GRID command to see the axes')
+	RETURN
+ 5200	CONTINUE
+        rgrid_blocks = FLOAT(mem_blk_size)* FLOAT(grid_blocks)/ 1.e6
+	num_str = LEFINT(INT(rgrid_blocks),num_slen)
+
+	CALL ERRMSG( ferr_insuff_memory,status,
      .	  num_str(:num_slen)//' Mwords were requested. ', *5130)
- 5130	  CALL WARN('You can use SET MEMORY/SIZE=xxx to increase memory.')
-          CALL WARN('The "Memory use" section of the FERRET '
+ 5130	CALL WARN('You can use SET MEMORY/SIZE=xxx to increase memory.')
+	CALL WARN('The "Memory use" section of the FERRET '
      .              //'Users Guide has further tips.') 
-	ENDIF
         GOTO 5000
- 5200	CONTINUE
-	CALL ERRMSG( ferr_insuff_memory,status,
-     .	'A negative number of words were requested. ', *5210)
- 5210	CALL WARN('The current grid is most likely too large')
 	RETURN
 	END
+
diff --git a/fer/mem/get_work_mr.F b/fer/mem/get_work_mr.F
index 112d60a..e085e4c 100644
--- a/fer/mem/get_work_mr.F
+++ b/fer/mem/get_work_mr.F
@@ -49,6 +49,7 @@
 *      2/00 *sh* bug fix - initialize mr_grid
 * V533 7/01 *sh* - set data type
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -61,11 +62,13 @@
 	INTEGER	size, mr, status
 
 * internal variable declarations
-	INTEGER start_block, num_blocks, idim
+	INTEGER start_block, num_blocks, grid_blocks, idim
 
 * --- end of introductory code ---
 
-	CALL GET_MEMORY( size, start_block, num_blocks, status )
+* COMPUTE # BLOCKS NEEDED
+	grid_blocks = ( size + mem_blk_size - 1 ) / mem_blk_size
+	CALL GET_MEMORY( size, grid_blocks, start_block, num_blocks, status )
 
 * get a free slot in the memory variable table
 	CALL STACK_PTR_UP( cx_stack_ptr, max_context, status )
diff --git a/fer/mem/get_work_spc.F b/fer/mem/get_work_spc.F
index 973a74e..7b0abe9 100644
--- a/fer/mem/get_work_spc.F
+++ b/fer/mem/get_work_spc.F
@@ -45,6 +45,7 @@
 * revision 0.0 - 2/19/87
 * V510: *sh 1/2000 - bug fix when unable to allocate requested work space
 *        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
@@ -56,6 +57,9 @@
 * calling argument declarations:
 	INTEGER	size, start_block, status
 
+* internal variable declarations:
+	INTEGER grid_blocks
+
 * --- end of introductory code ---
 
 	IF ( size .LE. sp_last_size ) THEN
@@ -63,7 +67,9 @@
 
 	ELSE
 	   CALL RELEASE_WORK_SPC
-	   CALL GET_MEMORY( size, sp_start_block, sp_num_blocks, status )
+* COMPUTE # BLOCKS NEEDED
+	   grid_blocks = ( size + mem_blk_size - 1 ) / mem_blk_size
+	   CALL GET_MEMORY( size, grid_blocks, sp_start_block, sp_num_blocks, status )
 	   IF ( status .EQ. ferr_ok ) THEN
 	      sp_last_size = sp_num_blocks * mem_blk_size
 	   ELSE
diff --git a/fer/mem/get_work_spc.F b/fer/mem/r_cgrid_size_delta.F
similarity index 66%
copy from fer/mem/get_work_spc.F
copy to fer/mem/r_cgrid_size_delta.F
index 973a74e..ef4675b 100644
--- a/fer/mem/get_work_spc.F
+++ b/fer/mem/r_cgrid_size_delta.F
@@ -1,7 +1,5 @@
-	SUBROUTINE GET_WORK_SPC ( size, start_block, status )
+	REAL FUNCTION R_CGRID_SIZE_DELTA ( cx )
 
-*
-*
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
 *  Administration''s (NOAA) Pacific Marine Environmental Lab(PMEL),
@@ -35,43 +33,39 @@
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
 *
-* provide a region of temporary working space to the calling routine.
-* For greatest speed simply reuse the last provided if it is large enough
+* Real-number version of cgrid_size_delta.
+* determine the number of values in a 2D grid that lies within the plane
+* of the specified context
+* Unlike CGRID_SIZE this routine *IS* sensitive to cx_delta values
 
-* programmer - steve hankin
-* NOAA/PMEL, Seattle, WA - Tropical Modeling and Analysis Program
-* written for VAX computer under VMS operating system
-*
-* revision 0.0 - 2/19/87
-* V510: *sh 1/2000 - bug fix when unable to allocate requested work space
-*        2/12 *kms* Add E and F dimensions (use nferdims in tmap_dims.parm)
+* Ansley Manke 9/2014
 
         IMPLICIT NONE
         include 'tmap_dims.parm'
 	include 'ferret.parm'
-	include 'errmsg.parm'
-	include 'xvariables.cmn'
-	include 'xwork_space.cmn'
+	include 'xcontext.cmn'
 
-* calling argument declarations:
-	INTEGER	size, start_block, status
+* calling argument declarations
+	INTEGER	cx
 
-* --- end of introductory code ---
+* internal variable declarations
+	INTEGER	idim
+	REAL size, delta
 
-	IF ( size .LE. sp_last_size ) THEN
-	   status = ferr_ok
+* determine the delta product
+	size = 1
+	DO 10 idim = 1, nferdims
+	  IF (cx_delta(idim,cx) .NE. unspecified_val8) THEN
+	    delta = cx_delta(idim,cx)
+	  ELSE
+	    delta = 1.
+	  ENDIF
+	  size = size * 
+     .        (FLOAT(cx_hi_ss(cx,idim)-cx_lo_ss(cx,idim))/delta + 1.)
+ 10 	CONTINUE
 
-	ELSE
-	   CALL RELEASE_WORK_SPC
-	   CALL GET_MEMORY( size, sp_start_block, sp_num_blocks, status )
-	   IF ( status .EQ. ferr_ok ) THEN
-	      sp_last_size = sp_num_blocks * mem_blk_size
-	   ELSE
-	      sp_last_size = 0
-	   ENDIF
-	ENDIF
+* the result
+	R_CGRID_SIZE_DELTA = size
 
-	start_block = sp_start_block
 	RETURN
 	END
-
diff --git a/fer/ocn/calc_cvar.F b/fer/ocn/calc_cvar.F
index a6bfb1e..63b4fe8 100644
--- a/fer/ocn/calc_cvar.F
+++ b/fer/ocn/calc_cvar.F
@@ -50,6 +50,7 @@
 * V312: 5/94 - array "memory" as a calling argument
 * V320: 12/29/94 - use SPLIT_LIST to redirect tty output for GUI
 * V685 *acm*  6/13 Increase nominal length of abstract axis
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
 * calling arguments:
 * inp	cx	- "context" of the desired result (variable,data set and region)
@@ -57,7 +58,6 @@
 *			  component variables of the calculation
 * out	mres	- memory variable number of requested result
 
-#ifdef unix
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
 	include	'errmsg.parm'
@@ -67,16 +67,6 @@
 	include	'xcalc_vars.cmn'
 	include	'xprog_state.cmn'
 	include	'xcontext.cmn'
-#else
-	INCLUDE	'FERRET_CMN:FERRET.PARM'
-	INCLUDE	'FERRET_CMN:ERRMSG.PARM'
-	INCLUDE	'FERRET_CMN:INSTANCE_TABLE.PARM'
-	INCLUDE	'FERRET_CMN:GFDL.PARM'
-	INCLUDE	'FERRET_CMN:XVARIABLES.CMN'
-	INCLUDE	'FERRET_CMN:XCALC_VARS.CMN'
-	INCLUDE	'FERRET_CMN:XPROG_STATE.CMN'
-	INCLUDE	'FERRET_CMN:XCONTEXT.CMN'
-#endif
 
 	INTEGER		max_components
 	PARAMETER     ( max_components = 20 )
@@ -90,7 +80,7 @@
 	INTEGER		CGRID_SIZE, MGRID_SIZE, CGRID_AXIS, MR_DIM_LEN,
      .			nmr, mxtra, cx_xtra, cx_lrg, grid_size, temp_grid_size,
      .			var, ncomp, icomp, iend, k, i, idim, mr, fp, grid,
-     .			temp_start_blk, temp_nblks, dlo, dhi,
+     .			temp_start_blk, temp_nblks, dlo, dhi, grid_blocks,
      .			loest_ss, hiest_ss, res_ss_lo(4), res_ss_hi(4)
 	REAL		dt
 	REAL*8		TM_WORLD
@@ -561,7 +551,10 @@
  400	cx_variable( cx_xtra ) = pvcoe
 	CALL RE_ASSIGN_VARIABLE( mxtra, cx_xtra )
 	temp_grid_size = MGRID_SIZE( mrl(1) )	! working space for "AIR"
-	CALL GET_MEMORY( temp_grid_size,temp_start_blk,temp_nblks,status )
+
+* COMPUTE # BLOCKS NEEDED
+	grid_blocks = ( temp_grid_size + mem_blk_size - 1 ) / mem_blk_size
+	CALL GET_MEMORY( temp_grid_size, grid_blocks,temp_start_blk,temp_nblks,status )
 	IF ( status .NE. ferr_ok ) GOTO 5100
 	CALL EXPL_CORIOLIS( 
      .		memory( 1, mr_blk1( mrl(1) ) ), mrl(1)	, ! u
@@ -576,7 +569,8 @@
  410	cx_variable( cx_xtra ) = pucoe
 	CALL RE_ASSIGN_VARIABLE( mxtra, cx_xtra )
 	temp_grid_size = MGRID_SIZE( mrl(1) )	! working space for "AIR"
-	CALL GET_MEMORY( temp_grid_size,temp_start_blk,temp_nblks,status )
+	grid_blocks = ( temp_grid_size + mem_blk_size - 1 ) / mem_blk_size
+	CALL GET_MEMORY( temp_grid_size, grid_blocks,temp_start_blk,temp_nblks,status )
 	IF ( status .NE. ferr_ok ) GOTO 5100
 	CALL EXPL_CORIOLIS( 
      .		memory( 1, mr_blk1( mrl(1) ) ), mrl(1)	, ! u
diff --git a/fer/plt/disp_data_set_up.F b/fer/plt/disp_data_set_up.F
index efeac27..13bd2ed 100644
--- a/fer/plt/disp_data_set_up.F
+++ b/fer/plt/disp_data_set_up.F
@@ -58,6 +58,7 @@
 * V533: *sh* 6/01 - include CGRID_SIZE in determination of axis buffer sizes
 *	            only if PLOT/VS
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -76,7 +77,7 @@
 	LOGICAL plot_vs
 	INTEGER	MR_DIM_LEN, CX_DIM_LEN, CGRID_SIZE,
      .		idim, ndim, dim(nferdims), mr1, ax_len, cx, ivar,
-     .		factor, loc
+     .		factor, loc, grid_blocks
 	CHARACTER buff*4
 
 * check for PLOT/VS -- significant in axis buffer sizes
@@ -136,9 +137,13 @@
 	ENDIF
 
 * allocate working storage
-	CALL GET_MEMORY( ax_len, ax1_start, ax1_blks, status )
+
+* COMPUTE # BLOCKS NEEDED
+	grid_blocks = ( ax_len + mem_blk_size - 1 ) / mem_blk_size
+
+	CALL GET_MEMORY( ax_len, grid_blocks, ax1_start, ax1_blks, status )
 	IF ( status .NE. ferr_ok ) GOTO 5020
-	CALL GET_MEMORY( ax_len, ax2_start, ax2_blks, status )
+	CALL GET_MEMORY( ax_len, grid_blocks, ax2_start, ax2_blks, status )
 	IF ( status .NE. ferr_ok ) GOTO 5010
 
 * successful completion
diff --git a/fer/plt/disp_set_up.F b/fer/plt/disp_set_up.F
index 9c49c80..69020c4 100644
--- a/fer/plt/disp_set_up.F
+++ b/fer/plt/disp_set_up.F
@@ -156,6 +156,7 @@
 *                  for coordinate data will be enough for the grid and if not
 *                  return an error message. 
 * V686 *acm* 12/13 Symbokls AX_HORIZ and AX_VERT may be x,y,z,t,e,f  
+* V691  *acm*  5/14 Clean up temp memory used for computing histogram levels
 
 C replace includes with those from plot_set_up, 
 C plus those starting w/ xbox_bounds:
@@ -717,6 +718,9 @@ C ACM added 8/2001 save cal id if vertical time axis
 
 	  CALL compute_histo_bins (memory(1,xblk1), memory(1,hblk1), 
      .       bad_x, nsiz, status) 
+     
+* ... clean up temporary variable
+	  CALL DELETE_VARIABLE( mvh_temp )
        ENDIF
 
 * For cases where regrid was set in AXIS_INTERVALS not because of a 
diff --git a/fer/plt/plot_set_up.F b/fer/plt/plot_set_up.F
index 6a11a15..9220f5b 100644
--- a/fer/plt/plot_set_up.F
+++ b/fer/plt/plot_set_up.F
@@ -50,7 +50,7 @@
 * written for VAX computer under VMS operating system
 *
 * revision 0.0 - 7/8/87  - based on DISP_SET_UP rev 1.1
-* revision 0.1 - 7/21/87 - added transpose option and AXIS_ENDS
+* revision 0.1 - 7/21/87 - added transpose option and 
 * revision 0.2 - 8/26/87 - added TAXIS ON for time axis plots
 * revision 0.3 - 2/29/88 - allowed for non-geometric axes, time axis formats,
 *			   non-inverted Z data,
@@ -150,6 +150,10 @@
 * PyFr *kms*  7/13 Scale default lettering sizes by textscale
 * V6.85 *acm* 9/13 New PLOT/COLOR w/o argument for all-color line plot
 * V685+ *acm  12/13 In dependent axis setup, make sure variable the_taxis is set.
+* V691  *acm*  5/14 For ribbon line plots, set up for histogram levels
+* V691  *acm*  7/14 Fix ticket 2187: axis labels for PLOT/VS plots.
+* V693  *acm* 10/14 Fix 2122: Check for a valid axis if they've asked for a 
+*                   log axis before proceeding with vlimits or hlimits
 
 	include 'tmap_dims.parm'
 	include 'xtm_grid.cmn_text'
@@ -201,7 +205,7 @@
      .			slen2, slen3, tax, plot_mem_used, nload, i,
      .			pxlim, pylim, phlim, pvlim,pindeplim, pdeplim,
      .			dep_axtyp, indep_axtyp, the_taxis, ribbon_var, 
-     .			junits, iaxis
+     .			junits, iaxis, hblk1, mvh_temp
 
 	INTEGER         TM_GET_CALENDAR_ID, cal_id_1, cal_id_2,
      .			cal_id_old, cal_id_new
@@ -345,11 +349,9 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 	   IF ( status .NE. ferr_ok ) GOTO 5000
 	   var1 = 2	! since first var is independent axis
 	   ndv  = nmv - 1	! # of dependent variables
-	   IF ( use_keys .AND. (.NOT. nokey)) THEN
-	      plot_title = KEY_STRING( cx_list(1), key_doc, slen )
-	   ELSE
-	      plot_title = FULL_VAR_TITLE( cx_list(1), slen )
-	   ENDIF
+	   use_keys = .FALSE.
+	   plot_title = FULL_VAR_TITLE( cx_list(1), slen )
+
 * ... label the independent axis as the first var given
 	   IF ( .NOT.no_labels ) THEN
 	      buff1 = VAR_UNITS(cx_x)
@@ -378,6 +380,18 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
               IF (tax .EQ. 0) tax = grid_line(t_dim,cx_grid(cx_list(var1)) )
               cal_name = line_cal_name(tax)
               cal_id_1 = TM_GET_CALENDAR_ID ( cal_name )
+
+* Check for a valid axis if they've asked for a log axis before proceeding
+	      IF (indep_is_log) THEN
+	         CALL AXIS_ENDS(indep_ax,indep_dim,grid1,ind_min,ind_max,
+     .                       delta, indep_is_log, indep_axtyp, status)
+	         IF ( status .NE. ferr_OK ) THEN
+                    first = ind_min
+                    last  = ind_max
+                    GOTO 5170
+                 ENDIF
+	      ENDIF
+
 	      CALL EQUAL_RANGE(
      .			cmnd_buff(qual_start(pindeplim):qual_end(pindeplim)),
      .			indep_dim, ind_min, ind_max, delta,
@@ -595,6 +609,7 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
                  iunits = TM_UNIT_ID(buff1)
                  IF (iunits .EQ. 4) THEN
 	            delta = unspecified_val8
+		    
 	            CALL AXIS_ENDS(dep_ax,dep_dim,grid1,dep_min,dep_max,
      .                      delta, dep_is_log, dep_axtyp, status)
 
@@ -639,9 +654,27 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 
 * Compute the mean and standard dev for ribbon-color variable, 
 * needed for computing color levels. Results stored in PPLUS common.
+* If histogram-based levels are requested, compute the 
+* histogram bins.
 
 	   IF (ribbon_plot .AND. ipl.EQ.ribbon_var) THEN
-              CALL COMPUTE_MNSTD (dep_dat, mr_bad_data(mv), .TRUE., npts, status)
+
+              IF (need_histo) THEN
+* create temporary buffer to contain workspace
+                 CALL CREATE_TEMP_MEM_VAR( cx, mvh_temp, status )
+                 IF ( status .NE. ferr_ok ) RETURN
+                 hblk1 = mr_blk1( mvh_temp )
+                 plot_mem_used = plot_mem_used + npts
+
+                 CALL compute_histo_bins (dep_dat, memory(1,hblk1), 
+     .            mr_bad_data(mv), npts, status) 
+     
+* ... clean up temporary variable
+                 CALL DELETE_VARIABLE( mvh_temp )
+              ELSE
+                 CALL COMPUTE_MNSTD (dep_dat, mr_bad_data(mv), need_std, npts, status)
+              ENDIF
+
 	   ENDIF
 
 * ... check that there is a range of dependent data for PLOT+ auto-scaling
@@ -746,6 +779,18 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 	            CALL WARN( 'Use /HLIMITS and /VLIMITS instead.')
 	            denig_xylim_msg_done = .TRUE.
 	         ENDIF
+		 
+*  Check for valid log axis before proceeding
+	         IF (indep_is_log) THEN
+	         CALL AXIS_ENDS  ( indep_ax, indep_dim, grid1,
+     .				   ind_min, ind_max, delta, 
+     .				   indep_is_log, indep_axtyp, status )
+	            IF ( status .NE. ferr_OK ) THEN
+                       first = ind_min
+                       last  = ind_max
+                       GOTO 5170
+                    ENDIF
+	         ENDIF
 	         CALL EQUAL_RANGE(
      .			cmnd_buff(qual_start(pindeplim):qual_end(pindeplim)),
      .			indep_dim, ind_min, ind_max, delta,
@@ -781,7 +826,6 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
      .				SECS_TO_TSTEP( grid1, the_taxis, ind_min ),
      .				SECS_TO_TSTEP( grid1, the_taxis, ind_max ) )
 	      ELSE
-
 	         CALL AXIS_ENDS  ( indep_ax, indep_dim, grid1,
      .				   ind_min, ind_max, delta, 
      .				   indep_is_log, indep_axtyp, status )
@@ -799,6 +843,7 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 	   ENDIF
 * ... dependent axis scaling
 *  force axis scaling if the data has no range
+
            IF (the_taxis .EQ. 0) the_taxis = dep_dim
 
 	   IF ( pdeplim .GT. 0 ) THEN
@@ -807,6 +852,17 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 	         CALL WARN( 'Use /HLIMITS and /VLIMITS instead.')
 	         denig_xylim_msg_done = .TRUE.
 	      ENDIF
+*  Check for valid log axis before proceeding
+	      IF (dep_is_log) THEN
+	         CALL AXIS_ENDS( dep_ax, the_taxis, grid, dep_min, dep_max, 
+     .                        delta, dep_is_log, dep_axtyp, status )
+	         IF ( status .NE. ferr_OK ) THEN
+                    first = dep_min
+                    last  = dep_max
+                    GOTO 5170
+                 ENDIF
+	      ENDIF
+
 	      CALL EQUAL_RANGE(
      .			cmnd_buff(qual_start(pdeplim):qual_end(pdeplim)),
      .			dep_dim, dep_min, dep_max, delta,
@@ -823,6 +879,7 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 
 	   ELSEIF ( all_1_dep ) THEN
 	      IF (only_val .EQ. bad_val4) val1 = 0.0	! 10/99
+	      
 	      CALL AXIS_ENDS( dep_ax, the_taxis, grid,val1-1.D0,val1+1.D0,1.D0,
      .                        dep_is_log, dep_axtyp, status )   
 	      IF ( status .NE. ferr_OK ) THEN
@@ -834,6 +891,7 @@ c        IF ( plot_mem_used .GT. 0.999*pplmem_nsize ) GOTO 5150  ! test is now i
 	      CALL MINMAX( dep_dat, npts, mr_bad_data(mv), lo, hi )
 	      dep_min = DBLE( lo )
 	      dep_max = DBLE( hi )
+	      
 	      CALL AXIS_ENDS( dep_ax, the_taxis, grid, dep_min, dep_max, 
      .                        delta, dep_is_log, dep_axtyp, status )
 	      IF ( status .NE. ferr_OK ) THEN
diff --git a/fer/plt/polygon_set_up.F b/fer/plt/polygon_set_up.F
index 73d5ccb..5a37449 100644
--- a/fer/plt/polygon_set_up.F
+++ b/fer/plt/polygon_set_up.F
@@ -131,6 +131,7 @@
 * V6.85 *acm* 9/13 Change to CALL LINE_STYLE, implementing new PLOT/COLOR w/o 
 *                  argument for all-color line plot
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
+* V691  *acm*  5/14 Clean up temp memory used for computing histogram levels
 
 	include 'tmap_dims.parm'
 	include 'xtm_grid.cmn_text'
@@ -774,6 +775,9 @@ c	   IF ( npoly         .GE. NPOLYGON   ) GOTO 5160
 
 	  CALL compute_histo_bins (x_dat, memory(1,hblk1), 
      .       mr_bad_data(mr_color), ncolor, status) 
+
+* ... clean up temporary variable
+	  CALL DELETE_VARIABLE( mvh_temp )
        ENDIF
 
 * ... check for adequate PLOT+ memory to store the npts for each poly. 
@@ -958,6 +962,18 @@ c	   IF ( npoly         .GE. NPOLYGON   ) GOTO 5160
               IF (tax.EQ.mnormal) tax = grid_line(t_dim,cx_grid(cx_x ))
               cal_name = line_cal_name(tax)
               cal_id = TM_GET_CALENDAR_ID ( cal_name )
+
+*  Check for valid log axis before proceeding if log and limits are given
+	      IF (is_logx) THEN
+	          CALL AXIS_ENDS(x_ax, coord_dim, cx_grid(cx_x), vmin, 
+     .			     vmax, delta, x_is_log, x_axtyp, status )
+	         IF ( status .NE. ferr_ok ) THEN
+                    first = vmin
+                    last  = vmax
+                    GOTO 5400
+                 ENDIF
+              ENDIF
+
 	      CALL EQUAL_RANGE( 
      .			cmnd_buff(qual_start(pxdenig):qual_end(pxdenig)),
      .			x_dim, vmin, vmax, delta,
@@ -1022,6 +1038,18 @@ c	   IF ( npoly         .GE. NPOLYGON   ) GOTO 5160
               IF (tax.EQ.mnormal) tax = grid_line(t_dim,cx_grid(cx_x ))
               cal_name = line_cal_name(tax)
               cal_id = TM_GET_CALENDAR_ID ( cal_name )
+
+*  Check for valid log axis before proceeding if log and limits are given
+	      IF (y_is_log) THEN 
+                 CALL AXIS_ENDS(y_ax,coord_dim,cx_grid(cx_y),
+     .			     vmin,vmax,delta, y_is_log, y_axtyp, status )
+	         IF ( status .NE. ferr_ok ) THEN
+		    first = vmin
+		    last = vmax
+		    GOTO 5400
+	         ENDIF
+	      ENDIF
+
 	      CALL EQUAL_RANGE( 
      .			cmnd_buff(qual_start(pydenig):qual_end(pydenig)),
      .			y_dim, vmin, vmax, delta,
diff --git a/fer/stk/get_dependencies.F b/fer/stk/get_dependencies.F
index ee16de6..a111cfe 100644
--- a/fer/stk/get_dependencies.F
+++ b/fer/stk/get_dependencies.F
@@ -42,6 +42,8 @@
 * NOAA/PMEL, Seattle, WA - Tropical Modeling and Analysis Program
 *
 * V685+ 9/13 *sh*  
+* V692 10/14 *acm* Ticket 2204: initialize the new context before
+*                  putting info init
 
         include 'tmap_errors.parm'
         include 'tmap_dims.parm'
@@ -67,6 +69,8 @@
 	CALL STACK_PTR_UP( cx_stack_ptr, max_context, status )
 	IF ( status .NE. ferr_ok ) GOTO 5000
 	cx = cx_stack_ptr
+* Make the new context empty 
+	CALL INIT_EMPTY_CONTEXT ( cx )
 	cx_data_set(cx) = dset
 	cx_variable(cx) = uvar
 	cx_category(cx) = cat_user_var
@@ -95,6 +99,7 @@
 * a uvar has just been reported.  Are we done ?
  300	IF ( isp .EQ. isp_orig ) THEN
 * ... yes - clean up and go home
+	   IF (status .NE. ferr_ok) GOTO 5000
 	   IF ( cx_stack_ptr .NE. cx_orig ) WRITE (6,*) 'cx_stk_lev_crptn'
 	   RETURN
 	ELSE
diff --git a/fer/stk/interp_stack.F b/fer/stk/interp_stack.F
index 963406e..7c93dc0 100644
--- a/fer/stk/interp_stack.F
+++ b/fer/stk/interp_stack.F
@@ -135,7 +135,7 @@
      .			DO_NEAREST_DIST_ABOVE, DO_NEAREST_DIST_BELOW,
      .			DO_NEAREST_INDEX_ABOVE,DO_NEAREST_INDEX_BELOW,
      .			DO_EVENT, DO_SMTH_MEDIAN, DO_SMTH_MIN, DO_SMTH_MAX,
-     .			DO_STDDEV
+     .			DO_STDDEV, DO_AVG_WGT, DO_4D_AVE_WGT  
 
 * calling arguments:
 * in	isp_base	- stack level at which to begin calculations
@@ -566,8 +566,12 @@ c	   GOTO 5000
 	      CALL IS_TRANS( memory, DO_INTERPOLATE, *2500, status )
 	   ELSEIF ( act .EQ. isact_average		) THEN
 	      CALL IS_TRANS( memory, DO_AVERAGE, *2500, status )
+	   ELSEIF ( act .EQ. isact_avg_wgt		) THEN
+	      CALL IS_TRANS( memory, DO_AVG_WGT, *2500, status )
 	   ELSEIF ( act .EQ. isact_4d_ave		) THEN	! 7/96
 	      CALL IS_TRANS( memory, DO_4D_AVE, *2500, status )
+	   ELSEIF ( act .EQ. isact_avg_4d_wgt		) THEN	
+	      CALL IS_TRANS( memory, DO_4D_AVE_WGT, *2500, status )
 	   ELSEIF ( act .EQ. isact_integ_def		) THEN	! 7/96
 	      CALL IS_TRANS( memory, DO_INTEG_DEF, *2500, status )
 	   ELSEIF ( act .EQ. isact_4d_int_def		) THEN
diff --git a/fer/stk/is_aggregate_gather.F b/fer/stk/is_aggregate_gather.F
index 42c44bd..e3bae72 100644
--- a/fer/stk/is_aggregate_gather.F
+++ b/fer/stk/is_aggregate_gather.F
@@ -42,6 +42,7 @@
 * NOAA/PMEL, Seattle, WA - Thermal Modeling and Analysis Program
 *
 * V680 5/12 *acm* 6D Ferret, changes for DEFINE DATA/AGGREGATE
+* V69+ 5/14 *acm* Fixes for ticket 2177: datasets with _FillValue, no missing_value
 
 	include	'tmap_dims.parm'
 	include	'ferret.parm'
@@ -68,8 +69,8 @@
 	INTEGER NCF_GET_ATTR_FROM_ID,
      .		com_mr, res_mr, com_cx, res_cx,	dflt_cx, com_isp, res_isp,
      .		frag, idim, top, imemb, memb_dset, len, igrid, iline,
-     .		varid, attlen, maxlen, fer_uvar, nv
-	REAL	vbad
+     .		varid, attlen, maxlen, fer_uvar, nv, is_phas_keep
+	REAL	vbad, cx_bad_pre
 	CHARACTER*128 VAR_CODE, vname
 	CHARACTER*10 buff
 
@@ -85,6 +86,7 @@
 	dflt_cx	   = is_big_cx( res_isp )
 	idim       = is_axis( res_isp )
 	frag	   = is_sum ( res_isp )
+	cx_bad_pre = cx_bad_data(com_cx)
 
 * diagnostic mode output: " doing aggregate gather VAR_NAME[x=lo:hi at TRN:n,D=#]"
 * Put in the M index value just for this output
@@ -117,6 +119,7 @@
 	ENDIF
 
 * copy data just received into the result
+	is_phas_keep = is_phase(isp)
 	CALL COPY_AGG_INTO( memory(1,mr_blk1(com_mr)), com_mr, com_cx,
      .			memory(1,mr_blk1(res_mr)), res_mr, is_phase(isp) )
 
@@ -165,7 +168,13 @@
 	   got_it = NC_GET_ATTRIB( memb_dset, varid, 'missing_value',
      .                .FALSE., vname, maxlen, attlen,
      .                attoutflag, buff, vbad )
-           IF (.NOT.got_it) vbad = bad_val4
+           IF (.NOT.got_it) THEN
+	      
+	      got_it = NC_GET_ATTRIB( memb_dset, varid, '_FillValue',
+     .                .FALSE., vname, maxlen, attlen,
+     .                attoutflag, buff, vbad )
+              IF (.NOT.got_it)  vbad = bad_val4
+	   ENDIF
 
 	   cx_grid( com_cx ) = igrid
 	   cx_data_set(com_cx) = memb_dset
@@ -181,6 +190,18 @@
 
 	   CALL FLESH_OUT_AXIS( idim, com_cx, status )
 	   IF ( status .NE. ferr_ok ) GOTO 5000
+
+* updated value for bad? If so update the data in the result
+* taking that bad-value into account
+
+           IF (vbad .NE. cx_bad_pre) THEN
+	      cx_bad_data(res_cx) = cx_bad_data(dflt_cx)
+     	      CALL COPY_AGG_INTO( memory(1,mr_blk1(com_mr)), com_mr, com_cx,
+     .          memory(1,mr_blk1(res_mr)), res_mr, is_phas_keep )
+     
+           ENDIF
+
+
 	ENDIF  ! or end this above flesh_out??
 	
 	is_uvar(com_isp) = cx_variable(com_cx)
diff --git a/fer/stk/is_counter_var.F b/fer/stk/is_counter_var.F
index 749194a..0a5dd9b 100644
--- a/fer/stk/is_counter_var.F
+++ b/fer/stk/is_counter_var.F
@@ -41,6 +41,7 @@
 *       *acm* 3/12 6D Ferret (common uses nferdims in tmap_dims.parm)
 *       *acm* 4/12 6D Ferret: time axis may be in t or f direction.
 * V683  *acm*10/12 Improve handling of F axes and info about the calendar of the grid.
+* V69+  *acm*10/14 Bug 2200: assign mr subscripts correctly
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -84,8 +85,8 @@
 	cx_hi_ss    ( cx, idim ) = unspecified_int4
         cx_by_ss    ( idim, cx ) = .TRUE.
 
-	mr_lo_ss    ( cx, idim ) = unspecified_int4
-	mr_hi_ss    ( cx, idim ) = unspecified_int4
+	mr_lo_ss    ( mr, idim ) = unspecified_int4
+	mr_hi_ss    ( mr, idim ) = unspecified_int4
 
 	cx_trans    ( idim, cx ) = trans_no_transform
 	cx_trans_arg( idim, cx ) = bad_val4
diff --git a/fer/stk/is_dependencies.F b/fer/stk/is_dependencies.F
index 6ae060b..f570f48 100644
--- a/fer/stk/is_dependencies.F
+++ b/fer/stk/is_dependencies.F
@@ -45,6 +45,7 @@
 * NOAA/PMEL, Seattle, WA - Tropical Modeling and Analysis Program
 *
 * V690 9/13 *sh*  -- with provisions for aux variables tested and refined
+* V693 10/14*acm* -- Fix tickets 2201, 2215
 
 * calling argument declarations:
 	INTEGER	status
@@ -240,6 +241,17 @@
      .				hi_cx,
      .				var_status )
 
+* Ticket 2201:
+* get_var_context increments line_use_cnt, and defines a grid.  Store
+* the uvar_grid so that the axes may be canceled later.  
+* Ticket 2115: If it's a grid as defined in get_context where we've 
+* encoded the start/end limits of the uvar name into the grid (see 
+* get_context_mods) do not store that grid number.
+
+        IF (cx_category(hi_cx) .EQ. cat_user_var) THEN
+	   IF (cx_grid(hi_cx) .GE. unspecified_int4) uvar_grid(uvar,dset) = cx_grid(hi_cx)  
+	ENDIF
+
 * have we returned here after reporting auxvar dependencies?
 * if so we have already reported this variable
 	IF (delayed_by_auxvars) THEN
diff --git a/fer/stk/is_do_gc_fcn.F b/fer/stk/is_do_gc_fcn.F
index 6664b40..6149c4a 100644
--- a/fer/stk/is_do_gc_fcn.F
+++ b/fer/stk/is_do_gc_fcn.F
@@ -87,8 +87,8 @@
      .          typ1, typ2, typ3, typ4, typ5, typ6, typ7, typ8, typ9,
      .          typr, pdim1, pdim2, pdim3, pdim4, pdim5, pdim6, pdim7,
      .          pdim8, pdim9, pdimr, frame_bottom, com_cx, res_mr,
-     .          itype
-        CHARACTER*40 alt_name
+     .          itype, arg_first_mismatch, slen
+        CHARACTER*40 TM_FMT, alt_name
 
 * convenience equivalences
 	INTEGER	com(10), typ(9), pdim(9)
@@ -147,6 +147,7 @@
 
 * trap attempts to pass arguments of the wrong type (1/99)
 
+        arg_first_mismatch = 0
         check_alt_fcn = .FALSE.
 	DO 100 icom = 1, num_com
 	   iarg = GCF_ARG_EVAL_ORDER(ifcn, icom)
@@ -161,6 +162,8 @@
 	      IF (itype .NE. parg_type_float_or_string)  
      .           check_alt_fcn = .TRUE.
 	   ENDIF
+	   IF (check_alt_fcn .AND. arg_first_mismatch.EQ.0)
+     .        arg_first_mismatch = iarg
  100	CONTINUE
 
 * Does the function designate an alternate function for strings?
@@ -341,7 +344,9 @@
  5200	CONTINUE
 * Could not match argument types
         risc_buff = alg_text
+	alt_name = TM_FMT(FLOAT(arg_first_mismatch), 2, 40, slen)
 	CALL ERRMSG( ferr_invalid_command, status,
-     .		'string/numeric data type mix-up: '//risc_buff, *5000 )
+     .		'string/numeric data type mix-up. Argument '//
+     .		alt_name(:slen)//' : '//risc_buff, *5000 )
 	END
 
diff --git a/fer/stk/is_trans.F b/fer/stk/is_trans.F
index 73c4e74..3426fd7 100644
--- a/fer/stk/is_trans.F
+++ b/fer/stk/is_trans.F
@@ -75,8 +75,11 @@
 *                   message if a 4-D transform was requested but the dimensions 
 *                   are not available in the grid.
 *       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
+* V691+ *acm* 8/14 Fix ticket 2196. Fill transformations component index range should 
+*                  be limited to the range of the axis.
 
 	include 'tmap_dims.parm'
+	include 'xtm_grid.cmn_text'
 	include	'ferret.parm'
 	include	'errmsg.parm'
 	include	'interp_stack.parm'
@@ -100,7 +103,7 @@
      .		slen, cx_valid,
      .		res_isp, com_isp, res_cx, com_cx, com_mr, res_mr, idim,
      .		trans, grid, lo_off, hi_off, ss_lo, ss_hi, wksiz, wkblk,
-     .		mrlist(2), axes(nferdims), idim1, i, ndim
+     .		mrlist(2), axes(nferdims), idim1, i, ndim, axis
 	REAL	arg
 	REAL*8	TM_WORLD, ww, ww_lo, ww_hi
 	CHARACTER VAR_TRANS*150, buff*150
@@ -312,6 +315,16 @@
      .			cx_lo_ss(com_cx,idim) = cx_lo_ss(res_cx,idim) + lo_off
 	      IF ( cx_hi_ss(res_cx,idim) .LT. cx_hi_ss(cx_valid,idim) )
      .			cx_hi_ss(com_cx,idim) = cx_hi_ss(res_cx,idim) + hi_off
+
+* The above can send the index range outside the line dimensions. Ticket 2196.
+* If its modulo that's ok otherwise limit to the index rangen for the axis
+
+	      axis = grid_line( idim, cx_grid(com_cx) )
+	      IF (.NOT. line_modulo(axis)) THEN
+	         cx_lo_ss(com_cx,idim) = MAX(1, cx_lo_ss(com_cx,idim))
+	         cx_hi_ss(com_cx,idim) = MIN(line_dim(axis), cx_hi_ss(com_cx,idim))
+	      ENDIF
+
 	      cx_by_ss(idim,res_cx) = .TRUE.
 	      CALL FLESH_OUT_AXIS( idim, com_cx, status )
 	      IF ( status .NE. ferr_ok ) GOTO 5000
diff --git a/fer/stk/offset_ss.F b/fer/stk/offset_ss.F
index f9c72ed..4946d49 100644
--- a/fer/stk/offset_ss.F
+++ b/fer/stk/offset_ss.F
@@ -53,6 +53,7 @@
 * V581: 3/05 *acm* Fix bug 1207: CDB, CIB, CDA, CIA are one-sided: return
 *                  offset only in one direction.
 *       *acm* 3/12 6D Ferret (common uses nferdims in tmap_dims.parm)
+* V692 7/14 *acm* ticket 2183: handle @WGT transform as for integrals
 
 * calling argument declarations:
 	INTEGER idim, cx, lo_off, hi_off, status
@@ -165,7 +166,15 @@
      .
      .	     offset_lo  	( trans_event_mask )	/  0 /,
      .	     offset_hi  	( trans_event_mask )	/  0 /,
-     .	     offset_supplied	( trans_event_mask )	/ .FALSE. /
+     .	     offset_supplied	( trans_event_mask )	/ .FALSE. /,
+     .
+     .       offset_lo  	( trans_avg_wgt )	/  0  /,
+     .	     offset_hi  	( trans_avg_wgt )	/  0  /,
+     .	     offset_supplied	( trans_avg_wgt )	/ .FALSE. /,
+     .
+     .       offset_lo  	( trans_4d_avg_wgt )	/  0  /,
+     .	     offset_hi  	( trans_4d_avg_wgt )	/  0  /,
+     .	     offset_supplied	( trans_4d_avg_wgt )	/ .FALSE. /
 
 * --- end of introductory code ---
 * initiailize
diff --git a/fer/utl/get_dependency_status.F b/fer/utl/get_dependency_status.F
index b9cd973..dd9154f 100644
--- a/fer/utl/get_dependency_status.F
+++ b/fer/utl/get_dependency_status.F
@@ -1,4 +1,5 @@
-	SUBROUTINE GET_DEPENDENCY_STATUS ( memory, expr, status_string, slen, status )
+	SUBROUTINE GET_DEPENDENCY_STATUS
+     .			( memory, expr, status_string, slen, status )
 
 *
 *
@@ -42,6 +43,7 @@
 * written for VAX computer under VMS operating system
 
 * V685+  *sh* 11/13 
+* V690  *sg* 5/14 - bug fix: changed declaraation type of "memory"
 
 	include 'tmap_dims.parm'
 	include 'ferret.parm'
@@ -51,7 +53,7 @@
 
 * calling argument declarations:
 	INTEGER status, slen
-	INTEGER	memory(mem_blk_size, max_mem_blks )
+	REAL	memory(mem_blk_size, max_mem_blks )
 	CHARACTER*(*) expr, status_string
 
 * internal variable declarations:
diff --git a/fer/utl/get_string_element.F b/fer/utl/get_string_element.F
index 45c9dcc..c28bc94 100644
--- a/fer/utl/get_string_element.F
+++ b/fer/utl/get_string_element.F
@@ -49,6 +49,7 @@
 * V553: 9/03 *kob* - increase locbuff to 512 from 100 - it was cutting strings
 *                    short*       *acm* 3/12 Add E and F dimensions (use nferdims in tmap_dims.parm)
 *       3/12 *kms*   int_buff and size_ibuff declared locally
+* V691+:8/14 *acm* - increase locbuff to 2048 - it was cutting strings
 
         IMPLICIT NONE
 	include	'tmap_dims.parm'
@@ -62,7 +63,7 @@
 
 * internal variable declarations
 	INTEGER  GET_C_STRING_LEN, flen
-	CHARACTER*512 locbuff
+	CHARACTER*2048 locbuff
         INTEGER size_ibuff
         PARAMETER ( size_ibuff = 2048 )
         INTEGER*2 int_buff(size_ibuff/2)
diff --git a/fer/utl/parse_number_list.F b/fer/utl/parse_number_list.F
index 1401af5..4ecefcc 100644
--- a/fer/utl/parse_number_list.F
+++ b/fer/utl/parse_number_list.F
@@ -41,6 +41,8 @@
 * V500: *sh* 12/98
 *	   2/99 - bug fix - 2 commas together
 *       *acm* 3/12 cleanup ifdefs and unnecessary include files. Add disclaimer.
+* V69+  *acm* 5/14 ticket 2174: check that the expression is just a constant
+*                  before reading from the buffer into the array.
 
 * calling argument declarations
 	INTEGER		nmax, n, status
@@ -48,7 +50,8 @@
 	CHARACTER*(*)	string
 
 * internal variable declarations
-	INTEGER 	comma_pos, last_comma_pos, slen
+	LOGICAL		TM_NUMBER
+	INTEGER 	TM_LENSTR1, comma_pos, last_comma_pos, slen
 	CHARACTER	buff*64
 
 	include 'ferret.parm'
@@ -82,7 +85,11 @@
 	      IF ( buff .EQ. ' ' ) THEN
 	         array(n) = bad_val4
 	      ELSE
-	         READ ( buff, *, ERR=5000 ) array(n)
+	         IF (TM_NUMBER (buff)) THEN
+	            READ ( buff, *, ERR=5000 ) array(n)
+	         ELSE
+		    GOTO 5200
+	         ENDIF
 	      ENDIF
 	   ENDIF
 	   GOTO 1000
@@ -94,7 +101,11 @@
 	   IF ( buff .EQ. ' ' ) THEN
 	      array(n) = bad_val4
 	   ELSE
-	      READ ( buff, *, ERR=5000 ) array(n)
+	      IF (TM_NUMBER (buff)) THEN
+	         READ ( buff, *, ERR=5000 ) array(n)
+	      ELSE
+	         GOTO 5200
+	      ENDIF
 	   ENDIF
 	ENDIF
 	last_comma_pos = last_comma_pos + comma_pos
@@ -114,4 +125,8 @@
  5000	CALL ERRMSG( ferr_syntax, status, string(last_comma_pos+1:),
      .							*4999 )
  5100	CALL ERRMSG( ferr_internal, status, string, *4999 )
+ 5200   CALL ERRMSG( ferr_syntax, status, 
+     .          'must be a constant '//
+     .		buff(:TM_LENSTR1(buff)), *4999 )
+
 	END
diff --git a/fer/utl/report_aux_dependency.F b/fer/utl/report_aux_dependency.F
index 1de4688..0fc103a 100644
--- a/fer/utl/report_aux_dependency.F
+++ b/fer/utl/report_aux_dependency.F
@@ -73,7 +73,8 @@
 	INTEGER	work(dependency_max_recs, dependency_nfields)
 
 * internal variable declarations
-	INTEGER	tree_level, its_aux
+	INTEGER	tree_level
+	LOGICAL its_aux
 
 	PARAMETER (its_aux = .TRUE.)
 
diff --git a/fer/xeq/xeq_cancel.F b/fer/xeq/xeq_cancel.F
index d360752..74607b8 100644
--- a/fer/xeq/xeq_cancel.F
+++ b/fer/xeq/xeq_cancel.F
@@ -1223,7 +1223,7 @@ c	ENDIF
  5830	CALL ERRMSG( ferr_erreq, status, 'Cannot close file', *5000 )
  5920   slen = TM_LENSTR(buff)
         CALL ERRMSG( ferr_invalid_command, status,
-     .   'variable, axis, or attribute does not exist'//
+     .   'variable, axis, or attribute does not exist: '//
      .    buff(:slen), *5000 )
  6210	CALL ERRMSG( ferr_invalid_command, status, 'unknown axis: '//
      .		     cmnd_buff(item_start(item):item_end(item)), *5000 )
diff --git a/fer/xeq/xeq_contour.F b/fer/xeq/xeq_contour.F
index 4d928d5..8694af8 100644
--- a/fer/xeq/xeq_contour.F
+++ b/fer/xeq/xeq_contour.F
@@ -120,6 +120,7 @@
 * PyFr  *kms*  7/13 Scale default lettering sizes by textscale;
 *                   use scaled label heights and spacings instead of 
 *                   hard-coded values.
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -142,10 +143,12 @@
 	REAL	memory( mem_blk_size, max_mem_blks )
 
 * internal variable declarations:
-	LOGICAL	  no_range, overlay, transpz, no_labels, fill, usa_line,
+	LOGICAL	TM_HAS_STRING, 
+     .            no_range, overlay, transpz, no_labels, fill, usa_line,
      .            do_key, spectrum, set_up, noaxes, axes, pattern, 
-     .		  no_data, is_logh, is_logv, inc_grid
-	INTEGER	  TM_LENSTR1, status, slen, sp, ipen, icolor,
+     .		  no_data, is_logh, is_logv, inc_grid, 
+     .		  changed_key
+	INTEGER	  TM_LENSTR, TM_LENSTR1, status, slen, sp, ipen, icolor, 
      .		  ax1_blks, ax1_start, loc, sigdig,
      .		  ax2_blks, ax2_start, patt, i, nparm, num_it, 
      .		  s1, s2, it_start(4), it_end(4), iax(4), density,
@@ -158,7 +161,7 @@
      .                  fname*128, buff*25, sfile*2048
 
 * internal parameter declarations:
-	LOGICAL		norm_dims_only, not_vector, continuous_key, 
+	LOGICAL		norm_dims_only, not_vector, 
      .                  is_shade, use_cell
 	PARAMETER     ( norm_dims_only  = .FALSE.,
      .			not_vector	= .FALSE. )
@@ -386,16 +389,32 @@ c           nlev = 1
            IF ( do_key ) THEN
               CALL PPLCMD ( from, line, 0, 'SHAKEY 1,1', 1, 1 )
 
-* ... /KEY=continouus ?
-              loc = qual_given( slash_cont_key )
+* ... /KEY[=continuous,horizontal,centerlabel ?
+
+              loc = qual_given( slash_shad_key )
+
               IF ( loc .GT. 0) THEN
-	         CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
+		 CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
      .                        buff, status )
                  IF ( status .NE. ferr_ok ) GOTO 5000
-	         IF ( buff(1:3) .EQ. 'CON' ) THEN
-                    continuous_key = .TRUE.
+		 
+		 IF (TM_LENSTR(buff) .GT. 0) THEN
+	         changed_key = .FALSE.
+	         IF ( TM_HAS_STRING(buff, 'CON') ) THEN
+                    changed_key = .TRUE.
                     CALL PPLCMD (from, line, 0, 'S_KEY 1', 1, 1 )
                  ENDIF
+	         IF ( TM_HAS_STRING(buff, 'CEN') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 2', 1, 1 )
+                 ENDIF
+	         IF ( TM_HAS_STRING(buff, 'HOR') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 3', 1, 1 )
+                 ENDIF
+                 IF (.NOT. changed_key) GOTO 5460
+		 ENDIF
+
               ENDIF
 
            ELSE
@@ -578,8 +597,8 @@ c done in disp_set_up. If mode_nodata_lab is false then leave this off.
 
 c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
 
-* restore default (non-continuous) key style?
-        IF (continuous_key ) CALL PPLCMD (from, line, 0, 'S_KEY 0', 1, 1 )
+* restore default key style?
+        IF (changed_key ) CALL PPLCMD (from, line, 0, 'S_KEY 0', 1, 1 )
 
 * interrupt occurred during plot ?
 	IF ( ppl_interrupted ) GOTO 1000
@@ -613,6 +632,9 @@ c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
  5450	CALL ERRMSG( ferr_out_of_range, status, 
      .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .		'AXES arguments must be 0 or 1', *1000 )
+ 5460	CALL ERRMSG( ferr_syntax, status, 
+     .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
+     .		'Unrecognized argument to KEY command', *1000 )
  5500   CALL ERRMSG( ferr_out_of_range, status,
      .          cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .          'Value from 0 to 100 must be given', *1000 )
diff --git a/fer/xeq/xeq_plot.F b/fer/xeq/xeq_plot.F
index 1a09f9c..2483d95 100644
--- a/fer/xeq/xeq_plot.F
+++ b/fer/xeq/xeq_plot.F
@@ -105,6 +105,8 @@
 * V6.85 *acm* 9/13 New qualifier PLOT/%%%%%%% for first color in multi-line plot
 * http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2013/msg00536.html
 
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
+
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
 	include 'errmsg.parm'
@@ -126,16 +128,19 @@
         include 'LINES.INC'
         include 'gkscm1_inc.decl'
         include 'GKSCM1.INC'    ! wsid
+        include 'cont_inc.decl' ! with iautoc and nlev
+        include 'CONT.INC'
 	
 * calling argument declarations:
 	REAL	memory( mem_blk_size, max_mem_blks )
 
 * internal variable declarations:
-	LOGICAL		overlay, transpz, versus,
+	LOGICAL		TM_HAS_STRING, 
+     .			overlay, transpz, versus,
      .			no_labels, set_up, noaxes, axes, use_line,
      .			is_logh, is_logv, nokey, no_data, no_range,
-     .			continuous_key, do_key, spectrum
-	INTEGER		TM_LENSTR1, STR_UPCASE, STR_SAME,
+     .			changed_key, do_key, spectrum
+	INTEGER		TM_LENSTR1, TM_LENSTR, STR_UPCASE, STR_SAME,
      .                  symbol, icolor, ipen, icolor1, ipen1, status,
      .			loc, limit, slen, thick, step_inc,
      .			ax1_blks, ax1_start,
@@ -444,17 +449,31 @@ c	   IF (.NOT.versus)  GOTO 5470
            IF ( do_key ) THEN
               CALL PPLCMD ( from, line, 0, 'SHAKEY 1,1', 1, 1 )
 
-* ... /KEY[=continouus] ?
+
+* ... /KEY[=continuous,horizontal,centerlabel ?
+
               loc = qual_given( slash_plot_key )
 
               IF ( loc .GT. 0) THEN
-	         CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
+		 CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
      .                        buff, status )
                  IF ( status .NE. ferr_ok ) GOTO 5000
-	         IF ( buff(1:3) .EQ. 'CON' ) THEN
-                    continuous_key = .TRUE.
+		 IF (TM_LENSTR(buff) .GT. 0) THEN
+	         changed_key = .FALSE.
+	         IF ( TM_HAS_STRING(buff, 'CON') ) THEN
+                    changed_key = .TRUE.
                     CALL PPLCMD (from, line, 0, 'S_KEY 1', 1, 1 )
                  ENDIF
+	         IF ( TM_HAS_STRING(buff, 'CEN') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 2', 1, 1 )
+                 ENDIF
+	         IF ( TM_HAS_STRING(buff, 'HOR') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 3', 1, 1 )
+                 ENDIF
+                 IF (.NOT. changed_key) GOTO 5520
+                 ENDIF
               ENDIF
 
            ELSE
@@ -575,6 +594,8 @@ c	IF ( loc .GT. 0  .AND. .NOT.versus ) THEN
      .				memory( 1, ax2_start ),
      .				status )
 	IF ( status .NE. ferr_ok ) GOTO 5000
+	
+	IF (need_histo) iautoc = 1
 
 c when it's an overlay, 'No Valid Data' is part of the plot key,
 c done in plot_set_up.
@@ -663,6 +684,9 @@ c done in plot_set_up.
 * restore axes? (5/29/97  revised 3/2002
 c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
 
+* restore default color key style?
+        IF (changed_key ) CALL PPLCMD (from, line, 0, 'S_KEY 0', 1, 1 )
+
 * restore dash settings? (5/29/97  revised 3/2002
         IF ( do_dash .EQ. 1 ) CALL PPL_DASH_RESTORE
 
@@ -749,4 +773,8 @@ c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
  5510	CALL ERRMSG( ferr_syntax, status, 
      .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .	'/COLOR must have an argument for PLOT/OVERLAY', *1000 )
+     
+ 5520	CALL ERRMSG( ferr_syntax, status, 
+     .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
+     .		'Unrecognized argument to KEY command', *1000 )
 	END
diff --git a/fer/xeq/xeq_polygon.F b/fer/xeq/xeq_polygon.F
index ced72eb..770a9d4 100644
--- a/fer/xeq/xeq_polygon.F
+++ b/fer/xeq/xeq_polygon.F
@@ -71,6 +71,7 @@
 * PyFr  *kms* 7/13 EQUAL_COLOR now returns a color ID, and EQUAL_THICK 
 *                  returns a pen ID from a color ID and a thickness.
 * PyFr  *kms* 7/13 Added /OPACITY
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -101,11 +102,12 @@
 	REAL	memory( mem_blk_size, max_mem_blks )
 
 * internal variable declarations:
-        LOGICAL         no_range, do_key, spectrum, pattern, use_line
-	LOGICAL		overlay, transpz, no_labels, set_up, noaxes, axes
-	LOGICAL         fill_it, is_logh, is_logv, no_data, is_modx,
-     .			do_mod_minus, do_mod_plus
-	INTEGER         sp, patt, TM_LENSTR1, STR_UPCASE
+	LOGICAL     TM_HAS_STRING, no_range, do_key, spectrum, pattern,
+     .			use_line, overlay, transpz, no_labels, set_up, 
+     .			noaxes, axes, line_it, fill_it, is_logh, is_logv, 
+     .			no_data, is_modx, do_mod_minus, do_mod_plus, 
+     .			changed_key
+	INTEGER     sp, patt, TM_LENSTR1, TM_LENSTR, STR_UPCASE
 	INTEGER		symbol, icolor, ipen, status,
      .			loc, limit, slen, coord_ax,
      .			ax1_blks, ax1_start,
@@ -290,16 +292,30 @@ CC       => Set values here instead.
 	IF ( do_key ) THEN
 	   CALL PPLCMD ( from, line, 0, 'SHAKEY 1,1', 1, 1 )
 
-* ... /KEY=continouus ?
-              loc = qual_given(slash_polygon_key )
+* ... /KEY[=continuous,horizontal,centerlabel ?
+	      
+	      loc = qual_given(slash_polygon_key )
               IF ( loc .GT. 0) THEN
-	         CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
+		 CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
      .                        buff, status )
                  IF ( status .NE. ferr_ok ) GOTO 5000
-	         IF ( buff(1:3) .EQ. 'CON' ) THEN
-                    continuous_key = .TRUE.
+		 IF (TM_LENSTR(buff) .GT. 0) THEN
+	         changed_key = .FALSE.
+	         IF ( TM_HAS_STRING(buff, 'CON') ) THEN
+                    changed_key = .TRUE.
                     CALL PPLCMD (from, line, 0, 'S_KEY 1', 1, 1 )
                  ENDIF
+	         IF ( TM_HAS_STRING(buff, 'CEN') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 2', 1, 1 )
+                 ENDIF
+	         IF ( TM_HAS_STRING(buff, 'HOR') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 3', 1, 1 )
+                 ENDIF
+                 IF (.NOT. changed_key) GOTO 5460
+		 ENDIF
+
               ENDIF
 
 	ELSE
@@ -543,6 +559,9 @@ c	IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
  5450	CALL ERRMSG( ferr_out_of_range, status, 
      .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .		'AXES arguments must be 0 or 1', *1000 )
+ 5460	CALL ERRMSG( ferr_syntax, status, 
+     .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
+     .		'Unrecognized argument to KEY command', *1000 )
  5500   CALL ERRMSG( ferr_out_of_range, status,
      .          cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .          'Value from 0 to 100 must be given', *1000 )
diff --git a/fer/xeq/xeq_shade.F b/fer/xeq/xeq_shade.F
index 3c66ea8..30acf87 100644
--- a/fer/xeq/xeq_shade.F
+++ b/fer/xeq/xeq_shade.F
@@ -104,6 +104,7 @@
 * V6.85 *acm* 3/13 Fix ticket 2049; check we can open palette file
 * PyFr  *kms*  6/13 Added /OPACITY
 * PyFr  *kms*  7/13 Scale default lettering sizes by textscale
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
 
 	include 'tmap_dims.parm'
 	include	'ferret.parm'
@@ -125,11 +126,13 @@
 	REAL	memory( mem_blk_size, max_mem_blks )
 
 * internal variable declarations:
-	LOGICAL	  no_range, overlay, transpz, no_labels, do_key,
+	LOGICAL	  TM_HAS_STRING, 
+     .            no_range, overlay, transpz, no_labels, do_key,
      .            spectrum, set_up, noaxes, axes, pattern, no_data,
-     .		  is_logh, is_logv, is_shade, use_cell, inc_grid
+     .		  is_logh, is_logv, is_shade, use_cell, inc_grid, 
+     .		  changed_key
 
-	INTEGER	  TM_LENSTR1, STR_UPCASE, status, slen, sp, patt,
+	INTEGER	  TM_LENSTR1, TM_LENSTR, STR_UPCASE, status, slen, sp, patt,
      .		  ax1_blks, ax1_start,
      .		  ax2_blks, ax2_start, i, nparm, num_it, 
      .		  loc, s1, s2, it_start(4), it_end(4), iax(4),
@@ -142,7 +145,7 @@
      .                  fname*128, buff*25, sfile*2048
 
 * internal parameter declarations:
-	LOGICAL		norm_dims_only, not_vector, continuous_key
+	LOGICAL		norm_dims_only, not_vector
 	PARAMETER     ( norm_dims_only  = .FALSE.,
      .			not_vector	= .FALSE. )
 
@@ -274,17 +277,31 @@ c              nlev = 1
            IF ( do_key ) THEN
               CALL PPLCMD ( from, line, 0, 'SHAKEY 1,1', 1, 1 )
 
-* ... /KEY[=continouus] ?
+* ... /KEY[=continuous,horizontal,centerlabel ?
+
               loc = qual_given( slash_shad_key )
 
               IF ( loc .GT. 0) THEN
-	         CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
+		 CALL EQUAL_STRING( cmnd_buff(qual_start(loc):qual_end(loc)),
      .                        buff, status )
                  IF ( status .NE. ferr_ok ) GOTO 5000
-	         IF ( buff(1:3) .EQ. 'CON' ) THEN
-                    continuous_key = .TRUE.
+		 IF (TM_LENSTR(buff) .GT. 0) THEN
+	         changed_key = .FALSE.
+	         IF ( TM_HAS_STRING(buff, 'CON') ) THEN
+                    changed_key = .TRUE.
                     CALL PPLCMD (from, line, 0, 'S_KEY 1', 1, 1 )
                  ENDIF
+	         IF ( TM_HAS_STRING(buff, 'CEN') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 2', 1, 1 )
+                 ENDIF
+	         IF ( TM_HAS_STRING(buff, 'HOR') ) THEN
+                    changed_key = .TRUE.
+                    CALL PPLCMD (from, line, 0, 'S_KEY 3', 1, 1 )
+                 ENDIF
+                 IF (.NOT. changed_key) GOTO 5460
+		 ENDIF
+
               ENDIF
 
            ELSE
@@ -451,8 +468,8 @@ c done in disp_set_up. If mode_nodata_lab is false then leave this off.
 
 c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
 
-* restore default (non-continuous) key style?
-        IF (continuous_key ) CALL PPLCMD (from, line, 0, 'S_KEY 0', 1, 1 )
+* restore default key style?
+        IF (changed_key ) CALL PPLCMD (from, line, 0, 'S_KEY 0', 1, 1 )
 
 * interrupt occurred during plot ?
 	IF ( ppl_interrupted ) GOTO 1000
@@ -484,6 +501,9 @@ c        IF ( axes .or. noaxes ) CALL PPL_AXES_RESTORE
  5450	CALL ERRMSG( ferr_out_of_range, status, 
      .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .		'AXES arguments must be 0 or 1', *1000 )
+ 5460	CALL ERRMSG( ferr_syntax, status, 
+     .		cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
+     .		'Unrecognized argument to KEY command', *1000 )
  5500   CALL ERRMSG( ferr_out_of_range, status,
      .          cmnd_buff(qual_start(loc):qual_end(loc))//pCR//
      .          'Value from 0 to 100 must be given', *1000 )
diff --git a/fer/xeq/xeq_show.F b/fer/xeq/xeq_show.F
index 2681306..27f8c29 100644
--- a/fer/xeq/xeq_show.F
+++ b/fer/xeq/xeq_show.F
@@ -184,6 +184,9 @@
 * V690 *sh* 12/13 Added SHOW TRANSFORMS of auxiliary variable regridding
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
 * V690 *sh* 1/14 Add SHOW VAR/SIGMA
+* V691+*acm* 8/14 Fix ticket 2188: SHOW MEMORY should say memory words are 8 bytes.
+* V691+ 8/14 *acm* Fix ticket 2194: SHOW with /OUTFILE and not /XML. 
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
         IMPLICIT NONE
 
@@ -285,10 +288,10 @@
      .          cache_size, cache_nelems, cache_preemption,
      .          sho_file, idim, ndims, nvars, ngatts, recdim, npts,
      .          vartype, outflag, num_clim_1, num_clim_n,
-     .          base_cx, base_isp
+     .          base_cx, base_isp, grid_blocks
         INTEGER saved_num_indices, saved_index_list(max_uvar),
      .                             arr_buff(max_uvar)
-	REAL	xtemp, ytemp, attvals(100), cache_mb, cache_n, cache_p
+	REAL	xtemp, ytemp, attvals(100), cache_mb, cache_n, cache_p, rsize
 	CHARACTER EXPR_NAME*8, TM_FMT*12, VAR_CODE*128,
      .		default*10, show_str*2048, arg*128, name*128, argsym*120
 	CHARACTER	varatt*641, varname*512, attname*128,
@@ -580,6 +583,9 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
            risc_buff = '</axes>'
            CALL SPLIT_LIST(pttmode_explct, show_lun, risc_buff, 0)
         ENDIF
+	
+	IF (sho_file .GT. 0) CLOSE( UNIT = show_lun, ERR = 5000 )
+
 	IF ( limited_show ) RETURN
 
 * SHOW EXPRESSION
@@ -902,7 +908,12 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
 	   ELSE
 	      arg = unspecified_name4
 	   ENDIF
-	   CALL GET_MEMORY( max_mrs, v1_blk1, v1_nblks, status )
+	   rsize = FLOAT(max_mrs)
+	   
+* COMPUTE # BLOCKS NEEDED
+	   grid_blocks = ( INT(rsize) + mem_blk_size - 1 ) / mem_blk_size
+
+	   CALL GET_MEMORY( INT(rsize), grid_blocks, v1_blk1, v1_nblks, status )
 	   IF ( status .NE. ferr_ok ) GOTO 5000
 	   CALL SHOW_DIAG_VARS( arg, memory(1,v1_blk1) )
 	   CALL FREE_MEMORY( v1_blk1, v1_nblks )
@@ -963,6 +974,7 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
            ENDIF
            CALL DISPLAY_DEPENDENCY( memory(1,dependency_block1) )
  1010      CALL EXIT_DEPENDENCY_MODE
+            IF (sho_file .GT. 0) CLOSE( UNIT = show_lun, ERR = 5000 )
            RETURN
         ENDIF
 
@@ -973,7 +985,7 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
 	   IF ( iqual .GT. 0 ) THEN
 	      CALL EQUAL_STRING( cmnd_buff(qual_start(iqual):qual_end(iqual)),
      .			      show_str, status )  ! show_str is just a buffer
-	      IF ( status .NE. ferr_ok ) RETURN
+	      IF ( status .NE. ferr_ok ) GOTO 4030
 	      IF ( show_str .EQ. ' ' ) THEN
 	         rqst_dset = pdset_irrelevant	! global variables
 	      ELSE
@@ -981,7 +993,7 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
 	         IF ( rqst_dset .EQ. unspecified_int4) THEN
 	            CALL WARN('Unknown data set: '
      .			//show_str(:TM_LENSTR1(show_str)))
-	            RETURN
+	            GOTO 4030
 	         ENDIF
 	      ENDIF
 	   ELSE
@@ -1216,6 +1228,8 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
            risc_buff = '</global>'
            CALL SPLIT_LIST(pttmode_explct, show_lun, risc_buff, 0)
         ENDIF
+ 4030	CONTINUE
+	IF (sho_file .GT. 0) CLOSE( UNIT = show_lun, ERR = 5000 )
 
 	IF ( limited_show ) RETURN
 
@@ -1284,9 +1298,17 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
 * SHOW MEMORY
  1200   show_str = TM_FMT( FLOAT(mem_blk_size) * 
      .                     FLOAT(max_mem_blks) / 1.E6, 3, 12, len)
+     
+#ifdef double_p
+	WRITE (risc_buff, *)
+     .	   'Current size of FERRET memory cache: '
+     .		//show_str(:len)//' MegaWords  (1 word = 8 bytes)'
+#else
 	WRITE (risc_buff, *)
      .	   'Current size of FERRET memory cache: '
      .		//show_str(:len)//' MegaWords  (1 word = 4 bytes)'
+#endif
+
 	CALL SPLIT_LIST(pttmode_explct, show_lun, risc_buff, 0)
 	risc_buff = ' '
 	IF ( qual_given( slash_mem_free ) .GT. 0 ) THEN
@@ -1306,7 +1328,7 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
  	sxml  = qual_given( slash_grid_xml  ) .GT. 0 
 
 
-* 	SHOW GRID/FILE=[/APPEND][/CLOBBER]
+* 	SHOW GRID/OUTFILE=[/APPEND][/CLOBBER]
         sho_file = qual_given( slash_show_grid_file )
 	clobber = qual_given( slash_show_grid_clobber ) .GT. 0
 	append = qual_given( slash_show_grid_append ) .GT. 0
@@ -1440,6 +1462,8 @@ c     .           (line.GE.num_clim_1 .AND. line.LE.num_clim_n) )
 	IF ( status .NE. ferr_ok ) GOTO 5000
 
 * successful completion
+        IF (sho_file .GT. 0) CLOSE( UNIT = show_lun, ERR = 5000 )
+
  1390 	RETURN
 
 * SHOW VIEWPORT view1,view2,...
diff --git a/ferretmagic.py b/ferretmagic.py
index 94d1a33..2cc75fc 100644
--- a/ferretmagic.py
+++ b/ferretmagic.py
@@ -29,12 +29,23 @@ Usage
 
 {ferret_PUTDATA_DOC}
 
+``%ferret_lock``
+
+{ferret_LOCK_DOC}
+
+``%ferret_unlock``
+
+{ferret_UNLOCK_DOC}
+
 """
 
 #-----------------------------------------------------------------------------
 #  Patrick.Brockmann at lsce.ipsl.fr
 #  Started 2013/08/28 then put on github.com 2013/09/06
+#  https://github.com/PBrockmann/ipython-ferretmagic
 #
+#  Lock functions are taken from ipythonPexpect magic
+#  https://cdcvs.fnal.gov/redmine/projects/ipython_ext/repository/revisions/master/raw/ipythonPexpect.py
 #-----------------------------------------------------------------------------
 
 import os.path
@@ -75,6 +86,9 @@ class ferretMagics(Magics):
         except ExceptionPexpect:
             raise ferretMagicError('pyferret cannot be started')
 
+        self._shell = shell
+        self._shell.ferret_locked = False
+
 #----------------------------------------------------
     def ferret_run_code(self, args, code):
         """
@@ -90,7 +104,8 @@ class ferretMagics(Magics):
 
         # Redirect stdout and stderr to file
         out_filename = temp_dir + '/output.txt' 
-        (errval, errmsg) = pyferret.run('set redirect /clobber /file="%s" stdout stderr' % out_filename)
+        if not(args.quiet):
+            (errval, errmsg) = pyferret.run('set redirect /clobber /file="%s" stdout' % out_filename)
 
         # Filename for saving the final plot (if any)
         if args.plotname:
@@ -127,17 +142,14 @@ class ferretMagics(Magics):
 
         # Set window size with the required aspect ratio; 
         # always anti-alias with windows of these sizes
+        canvas_width = math.sqrt(plot_width * plot_height / plot_aspect)
         if args.bigger:
-            # Double the size (both width and height) of the standard window 
-            # and add some extra (0.5) thickness to lines
-            canvas_width = 2.0 * math.sqrt(10.5 * 8.5 / plot_aspect)
-            line_thicken = 2.0
-        else:
-            # Use a standard-size window with usual line thickness
-            canvas_width = math.sqrt(10.5 * 8.5 / plot_aspect)
-            line_thicken = 1.0
-        (errval, errmsg) = pyferret.run('set window /xinches=%f /thick=%f /aspect=%f 1' % \
-                                        (canvas_width, line_thicken, plot_aspect))
+            # Double the width and height of the window, but the image will
+            # be saved at the original requested size.  
+            # Reducing the raster image when saving it sharpens the image.
+            canvas_width *= 2.0
+        (errval, errmsg) = pyferret.run('set window /xpixel=%f /aspect=%f 1' % \
+                                        (canvas_width, plot_aspect))
 
         # Run code
         pyferret_error = False
@@ -147,12 +159,13 @@ class ferretMagics(Magics):
                 input = unicode_to_str(input)
                 (errval, errmsg) = pyferret.run(input)
                 if errval != pyferret.FERR_OK:
+                    errmsg = errmsg.replace('\\', '<br />')
                     publish_display_data(_PUBLISH_KEY, {'text/html': 
                         '<pre style="background-color:#F79F81; border-radius: 4px 4px 4px 4px; font-size: smaller">' +
                         'yes? %s\n' % input +
-                        '** (LAST) ERROR MESSAGE: %s' % errmsg +
+                        '%s' % errmsg +
                         '</pre>' 
-                    })
+			})
                     pyferret_error = True
                     break
 
@@ -170,7 +183,8 @@ class ferretMagics(Magics):
         (errval, errmsg) = pyferret.run('cancel window 1')
 
         # Close the stdout and stderr redirect file
-        (errval, errmsg) = pyferret.run('cancel redirect')
+        if not(args.quiet):
+        	(errval, errmsg) = pyferret.run('cancel redirect')
 
         #-------------------------------
 
@@ -223,6 +237,10 @@ class ferretMagics(Magics):
                # Delete temporary directory - PNG encoded in the string
                rmtree(temp_dir)
 
+	# Error in ferret code - Delete temporary directory 
+	else: 
+           rmtree(temp_dir)
+
         # Publication
         for source, data in display_data:
               publish_display_data(source, data)
@@ -240,13 +258,17 @@ class ferretMagics(Magics):
         )
     @argument(
         '-b', '--bigger', default=False, action='store_true',
-        help='Produce a sharper plot by doubling the standard plot window size before scaling'
+        help='Produce a sharper plot by doubling the standard plot window size before scaling.'
         )
     @argument(
         '-p', '--pdf', default=False, action='store_true',
         help='Generate the output plot as a PDF file.'
         )
     @argument(
+        '-q', '--quiet', default=False, action='store_true',
+        help='Do not display stdout.'
+        )
+    @argument(
         '-f', '--plotname',
         help='Name of the image file to create.  If not given, a name will be generated.'
         )
@@ -278,13 +300,17 @@ class ferretMagics(Magics):
         )
     @argument(
         '-b', '--bigger', default=False, action='store_true',
-        help='Produce a sharper plot by doubling the standard plot window size before scaling'
+        help='Produce a sharper plot by doubling the standard plot window size before scaling.'
         )
     @argument(
         '-p', '--pdf', default=False, action='store_true',
         help='Generate the output plot as a PDF file.'
         )
     @argument(
+        '-q', '--quiet', default=False, action='store_true',
+        help='Do not display stdout.'
+        )
+    @argument(
         '-f', '--plotname',
         help='Name of the image file to create.  If not given, a name will be generated.'
         )
@@ -292,8 +318,9 @@ class ferretMagics(Magics):
         'string',
         nargs='*'
         )
+    @needs_local_scope
     @line_magic
-    def ferret_run(self, line):
+    def ferret_run(self, line, local_ns=None):
         '''
         Line-level magic to run a command in ferret. 
 
@@ -302,7 +329,8 @@ class ferretMagics(Magics):
 
         '''
         args = parse_argstring(self.ferret_run, line)
-        code = [self.shell.ev(" ".join(args.string))]
+        #code = [self.shell.ex(" ".join(args.string))]
+        code = [eval(" ".join(args.string), local_ns)]
         self.ferret_run_code(args, code)
 
 #----------------------------------------------------
@@ -331,7 +359,7 @@ class ferretMagics(Magics):
 
         args = parse_argstring(self.ferret_getdata, line)
 
-        code = unicode_to_str(args.code[0])
+        code = unicode_to_str(''.join(args.code))
         pythonvariable = code.split('=')[0]
         ferretvariable = code.split('=')[1]
         exec('%s = pyferret.getdata("%s", %s)' % (pythonvariable, ferretvariable, args.create_mask) )
@@ -383,13 +411,66 @@ class ferretMagics(Magics):
             '</pre>' 
         })
 
+    @line_magic
+    def ferret_lock(self, line):
+        '''
+        Lock the notebook to send EVERY executed cell through pyferret
+      
+        Do %ferret_unlock to unlock
+
+        '''
+    
+        self._shell.ferret_locked = True
+
+        print 'WARNING: All future cell execution will be processed through pyferret!'
+        print 'To return to IPython, issue %ferret_unlock'
+
+    @line_magic
+    def ferret_unlock(self, line):
+        '''
+          Unlock the notebook to return to regular IPython
+        '''
+
+    
+        self._shell.ferret_locked = False
+    
+        print 'Notebook will use IPython'
+
+# Let's rewrite InteractiveShell.run_cell to do automatic processing with pyferret,
+# if desired
+from IPython.core.interactiveshell import InteractiveShell
+
+# Let's copy the original "run_cell" method (we do this only once so we can reload)
+if not getattr(InteractiveShell, "run_cell_a", False):
+  InteractiveShell.run_cell_a = InteractiveShell.run_cell
+
+# Now rewrite run_cell
+def run_cell_new(self, raw_cell, store_history=False, silent=False, shell_futures=True):
+  
+  # Are we locked in pyferret?
+  if getattr(self, "ferret_locked", False):
+  
+    # Don't alter cells that start with %%ferret or with %ferret_unlock
+    if raw_cell[:8] == '%%ferret' or raw_cell[:15] == '%ferret_unlock':
+      pass
+    else:
+      # We're going to add a %%ferret to the top
+      raw_cell = "%%ferret\n" + raw_cell
+
+  self.run_cell_a(raw_cell, store_history, silent, shell_futures)
+
+# And assign it
+InteractiveShell.run_cell = run_cell_new
+
 
 #----------------------------------------------------
 __doc__ = __doc__.format(
     ferret_DOC = ' '*8 + ferretMagics.ferret.__doc__,
     ferret_RUN_DOC = ' '*8 + ferretMagics.ferret_run.__doc__,
     ferret_GETDATA_DOC = ' '*8 + ferretMagics.ferret_getdata.__doc__,
-    ferret_PUTDATA_DOC = ' '*8 + ferretMagics.ferret_putdata.__doc__
+    ferret_PUTDATA_DOC = ' '*8 + ferretMagics.ferret_putdata.__doc__,
+    ferret_LOCK_DOC = ' '*8 + ferretMagics.ferret_lock.__doc__,
+    ferret_UNLOCK_DOC = ' '*8 + ferretMagics.ferret_unlock.__doc__
     )
 
 def load_ipython_extension(ip):
diff --git a/fmt/cmn/tmap_errors.parm b/fmt/cmn/tmap_errors.parm
index 1612b16..a67991a 100644
--- a/fmt/cmn/tmap_errors.parm
+++ b/fmt/cmn/tmap_errors.parm
@@ -18,6 +18,7 @@
 * V600 7/06 *acm* New merr_nc_open for errors opening NC datasets
 * V604 6/07 *acm* New merr_remote_open for errors opening remote datasets
 * V683 10/10*acm* New merr_read_interrupt for user-interrupt reading netCDF/OPeNDAP data
+* V692 10/14*acm* New merr_time_string for errors in tm_secs_to_date
 
 * internally used PARAMETERS:
 	INTEGER		num_special,num_regular,pspecial,pregular,
@@ -25,7 +26,7 @@
      .	                pcdferr, pcdferrmax, nf_interrupt
 	CHARACTER*1	no_errstring
 	PARAMETER      (num_special	= 3,
-     .			num_regular	= 47,
+     .			num_regular	= 48,
      .			pspecial	= 2,	! avoid 0,1 as too special
      .			pregular	= 200,
      .			pcdferr		= 1000,
@@ -60,7 +61,8 @@
      .			merr_varform, merr_varmtch, merr_badtimedef,
      .			merr_dsetnf, merr_stepnf, merr_badcolmn,
      .                  merr_attalready, merr_badfileatt, merr_nc_open,
-     .                  merr_remote_open, merr_chunk_spec, merr_read_interrupt
+     .                  merr_remote_open, merr_chunk_spec, merr_read_interrupt,
+     .                  merr_time_string
 	PARAMETER      (merr_notsupport	= 1 + pregular,
      .			merr_filpos	= 1 + merr_notsupport,
      .			merr_tstep	= 1 + merr_filpos,
@@ -107,5 +109,6 @@
      .			merr_badfileatt = 1 + merr_attalready,
      .                  merr_nc_open    = 1 + merr_badfileatt,
      .                  merr_remote_open = 1 + merr_nc_open,
-     .                  merr_chunk_spec = 1 + merr_remote_open,
-     .                  merr_read_interrupt = 1 + merr_chunk_spec)
+     .                  merr_chunk_spec  = 1 + merr_remote_open,
+     .                  merr_read_interrupt = 1 + merr_chunk_spec,
+     .                  merr_time_string = 1 + merr_read_interrupt)
diff --git a/fmt/src/SOURCE_FILES b/fmt/src/SOURCE_FILES
index 388d087..641aa8e 100644
--- a/fmt/src/SOURCE_FILES
+++ b/fmt/src/SOURCE_FILES
@@ -15,6 +15,7 @@ cd_conventions_out.F\
 cd_defer_coord_write.F\
 cd_delete_attribute.F\
 cd_dods_control.F\
+cd_dim_only.F\
 cd_dset_remoteok.F\
 cd_encode_url.F\
 cd_get_1_axis.F\
@@ -98,6 +99,7 @@ cd_write_grid.F\
 cd_write_strdim.F\
 cd_write_var.F\
 encode_strings_data.F\
+ez_count_dset.F\
 ez_init_dset.F\
 ez_init_permute.F\
 ez_mod_dset.F\
diff --git a/fmt/src/cd_conventions_out.F b/fmt/src/cd_conventions_out.F
index 17af6fc..f141e88 100644
--- a/fmt/src/cd_conventions_out.F
+++ b/fmt/src/cd_conventions_out.F
@@ -63,26 +63,74 @@
 
 * local variable declarations:
 
-      INTEGER TM_LENSTR1, clen, slen
-      LOGICAL CD_GET_ATTRIB, got_it, do_warn
+      INTEGER TM_LENSTR1, STR_SAME, TM_LOC_STRING, 
+     .        clen, slen, ioc, loc, appnd
+      LOGICAL CD_GET_ATTRIB, got_it, do_warn, append_flag
       PARAMETER (do_warn = .TRUE. )
       CHARACTER*132 buff
+      CHARACTER*1 nl
 
 * initialize
       slen = MIN( TM_LENSTR1(string), 120 )
 
+
+* append flag will be set as follows:
+c      appnd =  1 ! to append
+c      appnd =  0 ! to write the string sent in
+c      appnd = -1 ! to write altered history string
+
+      appnd = 0
+      append_flag = .TRUE.
+
 * update (or create) conventions record
       got_it = CD_GET_ATTRIB( cdfid, NCGLOBAL, 'Conventions',
      .                     .NOT.do_warn, ' ', buff, clen, 132 )
 
-* is the last conventions stamp the same as this ?
+* is the last conventions attribute the same as this ?
       IF ( clen .GE. slen ) THEN
          IF ( buff(clen-slen+1:clen) .EQ. string(:slen) ) RETURN
       ENDIF
+      
+* is the last conventions attribute just a "CF-xx?
+* If so just replace with the current string  ...
+      append_flag = append
+      IF ( STR_SAME (buff(1:3), 'CF-') .EQ.0 .AND.
+     .     clen .LE. 12 ) THEN
+        appnd = 0
+        append_flag = .FALSE.
+
+      ELSE
+
+* does the last history end with a CF-xx ?
+* If so just replace with the current CF-xx...
+
+         append_flag = append
+         ioc = 0
+         loc = TM_LOC_STRING(buff,'CF-',ioc)
+         IF ( loc .GT. 1 ) THEN
+	    buff = buff(:loc-1)//', '//string(:slen)
+	    appnd = -1
+	    append_flag = .FALSE.
+	 ENDIF
+      ENDIF
+
+* Insert new CF conventions text
+* If there is a conventions att, append current one.
+* For conventions, just add it with a comma.
+
+      IF (appnd .EQ. 1) THEN
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'Conventions', 
+     .                     ', '//string(:slen),
+     .                     append_flag, status )
+      ELSE IF (appnd .EQ. 0) THEN
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'Conventions', string(:slen),
+     .                     append_flag, status )
+      ELSE IF (appnd .EQ. -1) THEN
+         slen = TM_LENSTR1(buff)
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'Conventions', buff(:slen),
+     .                     append_flag, status )
+      ENDIF
 
-* insert new attribute
-      CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'Conventions',
-     .                     string(:slen), append, status )
       IF ( status .NE. merr_ok ) GOTO 5000
 
 * successful completion
diff --git a/fmt/src/cd_dim_only.F b/fmt/src/cd_dim_only.F
new file mode 100755
index 0000000..f78cde3
--- /dev/null
+++ b/fmt/src/cd_dim_only.F
@@ -0,0 +1,40 @@
+	SUBROUTINE CD_DIM_ONLY (cdfid, name, nlen, dim_only)
+
+* include files
+
+	include 'netcdf.inc'
+
+	INTEGER cdfid, nlen
+	LOGICAL dim_only
+	CHARACTER*(*) name
+
+	INTEGER cdfstat, dimid, axid
+
+
+	dim_only = .FALSE.
+
+#ifdef usingDODSf2cUnderscore
+	cdfstat = NF_INQ_DIMID_( cdfid, name(:nlen), dimid)
+#else
+	cdfstat = NF_INQ_DIMID( cdfid, name(:nlen), dimid)
+#endif
+
+* already defined ? (limited consistency checking)
+	IF ( cdfstat .EQ. NF_NOERR ) THEN
+
+* ... is there a coordinate variable by the same name ?
+#ifdef usingDODSf2cUnderscore
+	   cdfstat = NF_INQ_VARID_( cdfid, name(:nlen), axid )
+#else
+	   cdfstat = NF_INQ_VARID( cdfid, name(:nlen), axid )
+#endif
+
+* The dimension matches but there is no coord var. 
+* This lets us append variables to a DSG file.
+
+	   dim_only = cdfstat .EQ. nf_enotvar
+
+	ENDIF
+
+	RETURN
+	END
diff --git a/fmt/src/cd_get_1_axis.F b/fmt/src/cd_get_1_axis.F
index d13c68e..9402482 100644
--- a/fmt/src/cd_get_1_axis.F
+++ b/fmt/src/cd_get_1_axis.F
@@ -178,6 +178,9 @@
 * V685 *acm* 11/13 REALLY make the check for axis length in single precision when the
 *                  coordinate variable came in as a single-precision variable.
 * V6.87 4/14 *acm* ticket 2146: if invalid bounds, make the bounds a dependent variale.
+* V691  4/41 *acm* Ticket 2170: bub with invalid bounds when point-spacing=true attribute.
+* Ticket 2172: If the axis is actually too long, reset the modulo flags
+* so it is treated as not modulo.
 
 * argument definitions:
 *       cdfid    - netCDF id number for already opened CDF file  (to go away with new attr. hanling)
@@ -408,6 +411,11 @@
      .                       do_warn, vname(:vlen), maxlen,
      .                       attlen, attoutflag, ename, val)
 
+* We will be checking bounds or edges. Read the coords too
+* in case we are going to mark the axis as irregular.
+
+      IF (got_edges .OR. got_bnds) line_regular(iaxis) = .FALSE.
+
 * optional "true_size" parameter for 2 point representations of even axes
       IF ( line_regular(iaxis) ) THEN
 
@@ -1157,37 +1165,39 @@ c           IF ( status .NE. merr_ok ) GOTO 1000        ! 3/99 soft error
      .         '" or bounds do not enclose point on axis '//
      .         vname(:vlen), tt)
            CALL TM_NOTE('Substituting coordinate midpoints', tt)
-           CALL TM_IRREGAX_MID( next_line_mem_pos,
-     .                          line_dim   (iaxis) )
+           IF (.NOT.line_regular(iaxis) ) CALL TM_IRREGAX_MID(
+     .                          next_line_mem_pos, line_dim (iaxis) )
            bad_bndsid = bndid
       
-        ENDIF
+        ELSE  ! Only check for centered bounds if the bounds are valid
 
 * For axes specified with BOUNDS, check whether coordinates are also 
 * centered in the boxes, and whether the size of the boxes are equal.
 * If there is one point, use upper and lower bound as given in the file 
 * to determine line_delta.
 
-        IF (TM_CHECK_BNDS_CENTERED(iaxis)) THEN
+           IF (TM_CHECK_BNDS_CENTERED(iaxis)) THEN
 * It's actually regular - save it as such
-           IF (.NOT. line_regular(iaxis)) THEN
-              line_regular(iaxis) = .TRUE.
-              line_start  (iaxis) = line_mem(ipt1)
-              IF (npts .GT. 1) THEN
-                 line_delta  (iaxis) = 
-     .               (line_mem(ipte)-line_mem(ipt1))/DBLE(npts-1)
-              ELSE
-	         ibx1 = ipt1 + npts
-                 line_delta(iaxis) = line_mem(ibx1+1)-line_mem(ibx1)
+              IF (.NOT. line_regular(iaxis)) THEN
+                 line_regular(iaxis) = .TRUE.
+                 line_start  (iaxis) = line_mem(ipt1)
+                 IF (npts .GT. 1) THEN
+                    line_delta  (iaxis) = 
+     .                (line_mem(ipte)-line_mem(ipt1))/DBLE(npts-1)
+                 ELSE
+   	         ibx1 = ipt1 + npts
+                    line_delta(iaxis) = line_mem(ibx1+1)-line_mem(ibx1)
+                 ENDIF
+                 line_subsc1 (iaxis) = unspecified_int4
+                 last_coord = line_start(iaxis) + 
+     .                DBLE(npts-1)*line_delta(iaxis)
+                 firs_coord = line_start(iaxis)
               ENDIF
-              line_subsc1 (iaxis) = unspecified_int4
-              last_coord = line_start(iaxis) + 
-     .               DBLE(npts-1)*line_delta(iaxis)
-              firs_coord = line_start(iaxis)
+           ELSE
+              line_regular(iaxis) = .FALSE.
            ENDIF
-        ELSE
-           line_regular(iaxis) = .FALSE.
-        ENDIF
+	
+        ENDIF  ! valid bounds, also checked centered
 
  600    CONTINUE
 
@@ -1263,6 +1273,9 @@ c           secsperyear = cals_yeardays(cal_id)* 24*60*60
 * double coordinate storage. If coords are single precision do the 
 * check in single precision.
 
+* Ticket 2172: If the axis is actually too long, reset the modulo flags
+* so it is treated as not modulo.
+
         IF (line_modulo(iaxis).AND.line_modulo_len(iaxis).NE.0.D0) THEN
            IF (line_modulo_len(iaxis) .LT. axwwlen) THEN
 c             line_modulo_len(iaxis) = 0.0D0
@@ -1274,10 +1287,13 @@ c             line_modulo_len(iaxis) = 0.0D0
 		IF (vartype.NE.ncdouble) delta = r4delta
                 ok = TM_FPEQ(delta, lm_len)
              ENDIF
-             IF (.NOT.  ok)
-     .          CALL TM_NOTE(
+             IF (.NOT.  ok) THEN
+	        line_modulo_len(iaxis) = 0
+		line_modulo(iaxis) = .FALSE.
+                CALL TM_NOTE(
      .          'Ignored modulo length exceeding axis length: '
      .          //vname(:vlen), tt )
+             ENDIF
            ENDIF
         ENDIF
 
diff --git a/fmt/src/cd_get_line_direction.F b/fmt/src/cd_get_line_direction.F
index 2e54a87..894a710 100644
--- a/fmt/src/cd_get_line_direction.F
+++ b/fmt/src/cd_get_line_direction.F
@@ -37,6 +37,8 @@
 *  code to determine the direction of a coordinate axis. Pulled out of cd_get_1_axis
 *  V683 ACM 9/2012
 *
+*  V692 ACM 7/2014 A cf_role attribute indicates the E direction.
+*
 *      include files: 
       
         IMPLICIT NONE
@@ -160,6 +162,20 @@
          ENDIF
       ENDIF
 
+* ... check for a cf_role attribute, if still undetermined.
+*     Put these axes in the E direction. This attribute may
+*     be on a non-coordinate varable. Those are found in 
+*     cd_get_generic_grids.
+
+      IF (line_direction(iaxis) .EQ. 'NA') THEN
+
+         maxlen = 20
+         got_it = NC_GET_ATTRIB(dset, ivar, 'cf_role',
+     .              do_warn, vname(:vlen), maxlen, attlen, 
+     .              attoutflag, buff, val)
+         IF (got_it) line_direction(iaxis) = 'EE'
+      ENDIF
+
 * ... check for a _CoordinateAxisType attribute, if still undetermined
 
       IF (line_direction(iaxis) .EQ. 'NA') THEN
diff --git a/fmt/src/cd_make_var.F b/fmt/src/cd_make_var.F
index 5412e1c..9707e3a 100644
--- a/fmt/src/cd_make_var.F
+++ b/fmt/src/cd_make_var.F
@@ -87,6 +87,8 @@
 *                 from the original dataset on output.
 * V687 3/14 *acm* Fix ticket 1750. Write Ferret-internal axis names to cdf files, unless
 *                 the user has said /KEEP_AXISNAMES
+* V69+ 4/14 *acm* After the above fix, need a tweak to be able to append to files having 
+*                 dimensions that are not coordinate variables
 
 * argument definitions:
 *     cdfid   - netCDF id number for already opened CDF file
@@ -136,8 +138,9 @@
 
 * local variable declarations:
       LOGICAL TM_ABSTRACT_AXIS, CD_USE_RECDIM, 
-     .        itsa_slab, need_child(nferdims), itsa_strvar, name_from_grid(nferdims)
-      INTEGER TM_LENSTR1, CD_ISIT_RECDIM, CD_WRITE_STRDIM,
+     .        itsa_slab, need_child(nferdims), itsa_strvar, 
+     .        name_from_grid(nferdims), dim_only(nferdims)
+      INTEGER TM_LENSTR1, CD_ISIT_RECDIM, CD_WRITE_STRDIM, STR_SAME,
      .        dimid(8), iaxis, cdfstat, dims, idim, varid, vartyp,
      .        nvdims, vdims(8), nvatts, nlen, glen, vlen, ax_type,
      .        lo2(nferdims), hi2(nferdims), what_recdim, strdim, dimsize,
@@ -266,7 +269,8 @@
                CALL CD_WRITE_AXIS( cdfid, dset, grid, idim, .FALSE.,
      .                   lo(idim), hi(idim), pcdf_child_span, 
      .                   .FALSE., .FALSE., mode_upcase_output, 
-     .                   keepax_flag, name_from_grid(idim), status)
+     .                   keepax_flag, name_from_grid(idim), dim_only(idim), 
+     .                   status)
                IF ( status .NE. merr_ok ) GOTO 5900
             ENDIF
  250     CONTINUE
@@ -275,6 +279,7 @@
       ELSE
 * 1/95 - create the full-span or sub-span axes as appropriate
          DO 260 idim = 1, nferdims
+	    dim_only(idim) = .FALSE.
 	    IF ( grid_line(idim, grid) .NE. mpsnorm
      .      .AND. lo(idim) .NE. unspecified_int4     ) THEN
 	      IF (need_child(idim)) THEN
@@ -286,7 +291,7 @@
      .			       idim.EQ.recdim, lo(idim), hi(idim), 
      .			       ax_type, edges_flag, do_bounds, 
      .                         mode_upcase_output, keepax_flag, 
-     .                         name_from_grid(idim), status )
+     .                         name_from_grid(idim), dim_only(idim), status )
               IF ( status .NE. merr_ok ) GOTO 5900
 	    ENDIF
  260     CONTINUE
@@ -318,7 +323,20 @@
             buff = line_name(iaxis)
 	 ENDIF
          lname = buff
-         IF (mode_upcase_output) CALL STR_UPCASE( lname, buff)
+         IF (mode_upcase_output) THEN
+	    CALL STR_UPCASE( lname, buff)
+	 ELSE
+	    IF (STR_SAME(CD_AXIS_NAME(dset, grid, idim, nlen), 
+     .                   CD_AXIS_OUTNAME(dset, grid, idim, nlen)) .EQ. 0) THEN
+	       buff = CD_AXIS_OUTNAME(dset, grid, idim, nlen)
+               lname = buff
+            ENDIF
+         ENDIF
+	 
+	 IF (dim_only(idim)) THEN 
+	    buff = CD_AXIS_OUTNAME(dset, grid, idim, nlen)
+            lname = buff
+         ENDIF
 
          IF ( iaxis .EQ. mpsnorm
      .   .OR. lo(idim) .EQ. unspecified_int4 ) GOTO 300
diff --git a/fmt/src/cd_stamp_out.F b/fmt/src/cd_stamp_out.F
index 662524a..fdfb09c 100644
--- a/fmt/src/cd_stamp_out.F
+++ b/fmt/src/cd_stamp_out.F
@@ -66,14 +66,25 @@
 * local variable declarations:
 * *kob* explicit definitions not allowed on decl line in linux...
 *       moved it to parameter line 10/96
-      INTEGER TM_LENSTR1, STR_SAME, hlen, slen
+      INTEGER TM_LENSTR1, STR_SAME, TM_LOC_STRING, 
+     .        hlen, slen, ioc, loc, appnd
       LOGICAL CD_GET_ATTRIB, got_it, do_warn, append_flag
       PARAMETER (do_warn = .TRUE. )
       CHARACTER*2048 history
+      CHARACTER*1 nl
+      PARAMETER( nl = CHAR(10) )
 
 * initialize
       slen = MIN( TM_LENSTR1(string), 120 )
 
+* append flag will be set as follows:
+c      appnd =  1 ! to append
+c      appnd =  0 ! to write the string sent in
+c      appnd = -1 ! to write altered history string
+
+      appnd = 0
+      append_flag = .TRUE.
+
 * update (or create) history record
       got_it = CD_GET_ATTRIB( cdfid, NCGLOBAL, 'history',
      .                     .NOT.do_warn, ' ', history, hlen, 2048 )
@@ -86,13 +97,39 @@
 
 * is the last history stamp just a FERRET Vxx  date?
 * If so just replace with the current FERRET Vxxx ...
-      append_flag = append
+
       IF ( STR_SAME (history(1:8), 'FERRET V') .EQ.0 .AND.
-     .     hlen .LE. 30 ) append_flag = .FALSE.
+     .     hlen .LE. 30 ) THEN 
+        appnd = 0
+	append_flag = .FALSE.
+      ELSE
 
-* insert new signature
-      CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'history', string(:slen),
+* does the last history end with a FERRET Vxx  date?
+* If so just replace with the current FERRET Vxxx ...
+
+         ioc = 0
+         loc = TM_LOC_STRING(history,'FERRET V',ioc)
+         IF ( loc .GT. 1 ) THEN
+	    history = history(:loc-1)//string(:slen)
+	    appnd = -1
+	    append_flag = .FALSE.
+	 ENDIF
+      ENDIF
+
+* Replace or append to signature.
+
+      IF (appnd .EQ. 1) THEN
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'history',  
+     .                     ','//nl(:1)//' '//string(:slen),
+     .                     append_flag, status )
+      ELSE IF (appnd .EQ. 0) THEN
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'history', string(:slen),
      .                     append_flag, status )
+      ELSE IF (appnd .EQ. -1) THEN
+         slen = TM_LENSTR1(history)
+         CALL CD_WRITE_ATTRIB(cdfid, pcdf_global, 'history', history(:slen),
+     .                     append_flag, status )
+      ENDIF
       IF ( status .NE. merr_ok ) GOTO 5000
 
 * successful completion
diff --git a/fmt/src/cd_write_axis.F b/fmt/src/cd_write_axis.F
index 63e58b9..63eb378 100644
--- a/fmt/src/cd_write_axis.F
+++ b/fmt/src/cd_write_axis.F
@@ -1,7 +1,8 @@
 	SUBROUTINE CD_WRITE_AXIS ( cdfid, dset, grid, idim, recdim,
      .                           loss, hiss, ax_type,  edges_flag, 
      .                           do_bounds, mode_upcase_output,  
-     .                           keepax_flag, name_from_grid, status )
+     .                           keepax_flag, name_from_grid, dim_only, 
+     .				 status )
 
 
 *  This software was developed by the Thermal Modeling and Analysis
@@ -100,6 +101,13 @@
 *                 a NOTE. They just clutter things up.
 * V687 3/14 *acm* Fix ticket 1750. Write Ferret-internal axis names to cdf files, unless
 *                 the user has said /KEEP_AXISNAMES
+* V69+ 4/14 *acm* After the above fix, need a tweak to be able to append to files having 
+*                 dimensions that are not coordinate variables
+* V69+ 7/14 *acm* Further fix to 1750. Ticket 2182: Keep case of axis name consistent when
+*                 creating and writing axis bounds.
+* V69+ 7/14 *acm* Ticket 1863: When output-flag was reset on an attribute, wasn't being applied
+*                 if the variable wasn't associated with the dataset where that axis lives.
+
 
 * argument definitions:
 *     dset    - dset (if netcdf file, for getting name and attribute 
@@ -145,7 +153,7 @@
       LOGICAL TM_ABSTRACT_AXIS, TM_DATE_OK, MATCH_NAME, NC_GET_ATTRIB,
      .       abstract, do_warn, got_modulo, got_calendar, got_units, 
      .       got_positive, got_spacing, got_axis, got_cartesian, got_it,
-     .       coordvar, do_off, do_scale
+     .       coordvar, do_off, do_scale, dim_only
       PARAMETER (do_warn = .TRUE. )
       INTEGER TM_LENSTR1, CD_AXLEN, STR_SAME, STR_DNCASE,
      .        dimid, iaxis, axid, cdfstat, lo, hi,
@@ -153,7 +161,7 @@
       INTEGER TM_GET_CALENDAR_ID, CD_WRITE_BNDSDIM, cal_id, varid,
      .        llen, vartype, nvdims, nvatts, iatt, attype, attlen,
      .        attoutflag, istat, maxlen, vdims(8), newid, all_outflag,
-     .        attid, dset_num, outtype, axis_packed, dlen, vlen
+     .        attid, dset_num, outtype, axis_packed, dlen, vlen, iset
       REAL vals(100)
 
 !      LOGICAL condensed
@@ -164,7 +172,8 @@
       CHARACTER CD_CHILDAX_NAME*128, CD_AXIS_NAME*128, CD_AXIS_OUTNAME*128, 
      .       TM_FMT*12,
      .       name*128, name_in*128, units*48, datebuff*40, 
-     .       buff*140, buff2*140, attname*128, dimstr*12, varstr*12
+     .       buff*140, buff2*140, attname*128, dimstr*12, varstr*12, 
+     .       name_bnds*140
 
 !      REAL*8 val8_cdf, val8_tmap
 * 12/97
@@ -174,15 +183,33 @@
 * initialize
       iaxis = grid_line(idim, grid)
       dset_num = dset
+      dim_only = .FALSE.
 
       name = CD_AXIS_NAME( dset_num, grid, idim, nlen )
       IF (keepax_flag .EQ. 1)  name = CD_AXIS_OUTNAME( dset_num, grid, idim, nlen )
       name_in = name
+      
+      name_from_grid = .FALSE.
+
+* If the datset is user-variable or unknown, see if the axis is from a dataset. The
+* OUTFLAG information for writing attributes is in the datset linked-list structure.
+
+      IF (dset .LE. 0) THEN
+         buff2  = name
+         DO 50 iset = 1, maxdsets
+	    IF (ds_name(iset) .NE. char_init1024) THEN
+	       CALL CD_GET_VAR_ID (iset, buff2, varid, status)
+	       IF (status .EQ. merr_ok) THEN
+	          dset_num = iset
+		  GOTO 60
+	       ENDIF
+	    ENDIF
+   50 	CONTINUE
+   60 	CONTINUE
+      ENDIF
 
       npts = line_dim(iaxis)
       abstract = TM_ABSTRACT_AXIS( iaxis )
-      
-      name_from_grid = .FALSE.
 
 * If mode upcase_output is set, then upcase both name and name_in which is 
 * being stored for later use.
@@ -190,8 +217,16 @@
       IF (mode_upcase_output) THEN
          CALL STR_UPCASE( name_in, name)
          CALL STR_UPCASE( name, name_in)
-      ENDIF
 
+* If not mode upcase_output, then keep the incoming case. 
+      ELSE 
+         name = CD_AXIS_NAME( dset_num, grid, idim, nlen )
+         name_in = CD_AXIS_OUTNAME( dset_num, grid, idim, llen )
+	 IF (STR_SAME(name, name_in) .EQ. 0) THEN 
+	    name = name_in
+	    nlen = llen
+	 ENDIF
+      ENDIF
 
 * determine lo/hi limits of the axis to be written
       IF ( abstract ) THEN
@@ -214,6 +249,15 @@
          nlen = MIN(nlen,maxchildlen)
       ENDIF
 
+* Is it just a dimension, not a coordinate variable
+
+      buff = CD_AXIS_OUTNAME( dset_num, grid, idim, llen )
+      CALL CD_DIM_ONLY (cdfid, buff, llen, dim_only)
+      IF (dim_only) THEN
+         name = buff
+         GOTO 1000  
+      ENDIF
+
 #ifdef usingDODSf2cUnderscore
       cdfstat = NF_INQ_DIMID_( cdfid, name(:nlen), dimid)
 #else
@@ -230,20 +274,6 @@
          cdfstat = NF_INQ_VARID( cdfid, name(:nlen), axid )
 #endif
 
-* The dimension matches but there is no coord var. Just return.
-* This lets us append variables to a DSG file.
-
-	 IF (cdfstat .EQ. nf_enotvar) THEN
-	    name = line_name_orig(iaxis)
-	    nlen = TM_LENSTR1( name )
-	    
-	    ! Do we want this warning? 
-c	    CALL WARN ('Dimension '//name(:nlen)//
-c     .        ' found. No corresponding coordinate variable.'//
-c     .        ' Writing with dimension only.')
-	    GOTO 1000  
-	 ENDIF
-
          IF ( cdfstat .NE. NF_NOERR ) GOTO 5300
 	 IF (.NOT. recdim) THEN 
             slen = CD_AXLEN( cdfid, dimid, status )
@@ -437,13 +467,16 @@ c     .        ' Writing with dimension only.')
 
 * If the user has not asked for bounds and if its a regular axis then
 *  do not write bounds attribute. (The bounds themselves arent written.)
-         IF ( (STR_SAME(attname, 'bounds') .EQ. 0) .AND. 
+            IF ( (STR_SAME(attname, 'bounds') .EQ. 0) .AND. 
      .        ((line_regular(iaxis)) .AND. do_bounds.LE.0) ) 
      .               attoutflag = 0
 
 * If they asked for /NOBOUNDS, dont write bounds even if the axis is irregular.
-         IF ( (STR_SAME(attname, 'bounds') .EQ. 0) .AND. 
-     .        ( do_bounds.LT.0) ) attoutflag = 0
+            IF ( STR_SAME(attname, 'bounds') .EQ. 0) THEN
+	       name_bnds = name(:nlen)//'_bnds'
+               IF (name_bnds.NE.buff) buff = name_bnds
+	       IF ( do_bounds.LT.0) attoutflag = 0
+            ENDIF
 
 * If there is a _FillValue attributes on axes, refuse to write it.
 
@@ -914,8 +947,17 @@ c     .        ' Writing with dimension only.')
      .  .AND. ( edges_flag .EQ. 0) 
      .  .AND. ( attoutflag .NE. 2) ) THEN
 
-         name = name(:nlen)//'_bnds'
-         elen = nlen + 5
+* bounds attribute may already be set up.  If so use it, otherwise define bounds.
+         got_it = NC_GET_ATTRIB ( dset_num, varid, attname, 
+     .               do_warn, name_in, maxlen, attlen, attoutflag, 
+     .               buff, vals)
+         IF (got_it) THEN
+            name = name_bnds
+            elen = TM_LENSTR1(name)
+	 ELSE
+	    name = name(:nlen)//'_bnds'
+	    elen = nlen + 5
+	 ENDIF
 
 * ... define the first dimension of bounds variable (what about record axis??)
 
diff --git a/fmt/src/cd_write_grid.F b/fmt/src/cd_write_grid.F
index 7814493..fe076bf 100644
--- a/fmt/src/cd_write_grid.F
+++ b/fmt/src/cd_write_grid.F
@@ -67,6 +67,8 @@
 * V685 6/13 *acm* Dont add SAVE/NOCOORDS
 * V687 3/14 *acm* Fix ticket 1750. Write Ferret-internal axis names to cdf files, unless
 *                 the user has said /KEEP_AXISNAMES
+* V69+ 4/14 *acm* After the above fix, need a tweak to be able to append to files having 
+*                 dimensions that are not coordinate variables
 
 * argument definitions:
 *     cdfid   - netCDF id number for already opened CDF file
@@ -99,7 +101,7 @@
       CHARACTER*(*) gname
 
 * local variable declarations:
-      LOGICAL gmod, name_from_grid
+      LOGICAL gmod, name_from_grid, dim_only
       INTEGER TM_LENSTR1, 
      .        defid, defdim, nlen, slen, cdfstat, iaxis, idim, glen, i
       CHARACTER CD_CHILDAX_NAME*132, CD_AXIS_OUTNAME*132, CD_AXIS_NAME*132,
@@ -203,7 +205,7 @@
      .           idim.EQ.recdim,
      .           lo(idim), hi(idim), pcdf_full_span, 
      .           edges_flag, do_bounds, mode_upcase_output,
-     .           keepax_flag, name_from_grid, status ) 
+     .           keepax_flag, name_from_grid, dim_only, status ) 
 
             IF ( status .NE. merr_ok ) GOTO 5900
          ENDIF
diff --git a/fmt/src/cd_write_var.F b/fmt/src/cd_write_var.F
index af5d9f7..8669a24 100644
--- a/fmt/src/cd_write_var.F
+++ b/fmt/src/cd_write_var.F
@@ -74,6 +74,9 @@
 * V685 6/13 *acm* Dont add SAVE/NOCOORDS
 * V687 3/14 *acm* Fix ticket 1750. Write Ferret-internal axis names to cdf files, unless
 *                 the user has said /KEEP_AXISNAMES
+* V69+ 7/14 *acm* Further fix to 1750. Ticket 2182: Keep case of axis name consistent when
+*                 creating and writing axis bounds.
+* V69+ *acm*  9/14 Ticket 1758. Memory request uses number of blocks not words
 
 * argument definitions:
 *     cdfid   - netCDF id number for already opened CDF file
@@ -115,12 +118,12 @@
 * local variable declarations:
 * *kob* explicit definitions not allowed on decl line in linux...
 *       moved it to parameter line 10/96
-      INTEGER TM_LENSTR1, 
+      INTEGER TM_LENSTR1, STR_SAME,
      .        start(nferdims), count(nferdims), idim, iaxis, cdfstat, vlen,
      .        slab_min(nferdims), slab_max(nferdims), tmrecax, cdrecax, dims, varid,
      .        hilim, i100, i, j, k, l, m, n, recaxvar, lorec, hirec, rectyp,
      .	      vartyp, nvdim, vdims(8), nvatts, bndstart(2), bndcount(2),
-     .        mblk1, nblks, npts, savecount
+     .        mblk1, nblks, npts, savecount, llen, grid_blocks
       LOGICAL CD_GET_BOUNDS, TM_ABSTRACT_AXIS, TM_DFPEQ, 
      .        got_it, scaled, writebounds
       CHARACTER*13 TM_STRING
@@ -326,7 +329,10 @@ c      EQUIVALENCE (r100_8, r100_4)
 
 * allocate memory for missing-data
 
-            CALL GET_MEMORY( npts*4, mblk1, nblks, status )
+* COMPUTE # BLOCKS NEEDED
+            grid_blocks = ( npts*4 + mem_blk_size - 1 ) / mem_blk_size
+
+            CALL GET_MEMORY( npts*4, grid_blocks, mblk1, nblks, status )
             IF ( status .NE. merr_ok ) GOTO 5900
 
             CALL CD_GET_MISSING_FLAG (cdfid, varid, vname, .TRUE., 
@@ -402,12 +408,21 @@ c      EQUIVALENCE (r100_8, r100_4)
 
             name = CD_AXIS_NAME( dset, grid, tmrecax, nlen )
             IF (keepax_flag .EQ. 1) name = CD_AXIS_OUTNAME( dset, grid, tmrecax, nlen )
-
-* If mode upcase_output is set, then upcase axis name.
+    
+* If mode upcase_output is set, then upcase the name
 
             IF (mode_upcase_output) THEN
                CALL STR_UPCASE( buff, name)
                name = buff
+            
+* If not mode upcase_output, then keep the incoming case. 
+            ELSE 
+               name = CD_AXIS_NAME( dset, grid, tmrecax, nlen )
+               buff = CD_AXIS_OUTNAME( dset, grid, tmrecax, llen )
+               IF (STR_SAME(name, buff) .EQ. 0) THEN 
+	          name = buff
+	          nlen = llen
+               ENDIF
             ENDIF
 
             name = name(:nlen)//'_bnds'
diff --git a/fmt/src/ez_count_dset.F b/fmt/src/ez_count_dset.F
new file mode 100644
index 0000000..5e74cff
--- /dev/null
+++ b/fmt/src/ez_count_dset.F
@@ -0,0 +1,242 @@
+	SUBROUTINE EZ_COUNT_DSET ( dset, ezform, nread, status  )
+*
+*
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
+* Ansley Manke 7/2014
+* 
+* Subroutine opens an EZ data set (ASCII and unformatted non_TMAP data files) 
+* and returns a count count the records in the datset, minus the number of 
+* records skipped. Addressing ticket 2182.
+* 
+
+* Arguments:
+*	dset	- data set number
+*	ezform	- file format
+*	nread	- (output) number of data records in file
+*
+	INTEGER*4	dset, nread, status
+	CHARACTER*(*)	ezform
+
+*
+* Include files
+	include 'ez_lib.parm'
+	include 'tmap_dims.parm'
+#include "tmap_dset.parm"
+	include 'tmap_errors.parm'
+	include 'xez_info.cmn_text'
+	external xez_info_data
+	include 'xez_order.cmn_text'
+	include 'xdset_info.cmn_text'
+	external xdset_info_data
+	include 'xstep_files.cmn_text'
+	external xstep_files_data
+*
+*internal parameter declarations *kob* 4apr94
+        CHARACTER*1     cr,lf
+#ifdef NO_INTRINSIC_IN_PARAMETER
+        PARAMETER       ( cr = o'015',
+     .                    lf = o'012')
+#else
+        PARAMETER       ( cr = CHAR(13),
+     .                    lf = CHAR(10))
+#endif
+
+* Local definitions
+	CHARACTER*11	file_format
+	CHARACTER*80	errbuff
+	CHARACTER*99	in_format
+	INTEGER*4	sfcnt, lunit, scnt, rcnt
+	INTEGER*4	skip_in, read_in, nout
+	INTEGER*4	itemp, i, irec, ierr
+	LOGICAL		unformatted, file_exists, file_open, stream
+        REAL		buff
+
+* Does data set exist?
+	IF (ds_name(dset) .EQ. char_init1024) GOTO 9300
+*
+* Locate Step file entry
+	DO 10 sfcnt = 1,maxstepfiles
+	  IF (sf_setnum(sfcnt) .EQ. dset) GOTO 20
+  10	CONTINUE
+	GOTO 9400
+
+* Initialize
+ 20	nread = 0
+
+*   get file format
+	stream = ezform(:3) .EQ. 'STR'
+	unformatted = ezform(:3) .EQ. 'UNF'
+	IF ( unformatted ) THEN
+	  file_format = 'UNFORMATTED'
+	ELSE
+	  file_format = 'FORMATTED'
+	  in_format = ezform		! Run time format info
+	ENDIF
+
+*   set up ASSIGN statements (for GOTO variable statements)
+	IF ( unformatted ) THEN
+	  ASSIGN 400 TO skip_in			! Goes to UNFORMATTED read
+	  ASSIGN 500 TO read_in			! Goes to UNFORMATTED read
+	ELSEIF ( in_format(:4) .EQ. 'FREE' ) THEN
+	  ASSIGN 450 TO skip_in			! Goes to FORMATTED read
+	  ASSIGN 610 TO read_in			! Goes to FORMATTED read
+	ELSEIF ( stream ) THEN			! "STREAM" direct access binary
+	  ASSIGN 499 TO skip_in
+	  ASSIGN 620 TO read_in
+	  irec = sf_skip(sfcnt) + 1     ! /SKIP=words
+	ELSE
+	  ASSIGN 450 TO skip_in			! Goes to FORMATTED read
+	  ASSIGN 600 TO read_in			! Goes to FORMATTED read
+	ENDIF
+
+* Check file validity if necessary
+  160	IF (.NOT. sf_valid(sfcnt)) THEN
+!	  INQUIRE (	FILE = sf_name(sfcnt),	! sf_name is too short 10/89
+	  INQUIRE (	FILE = ds_des_name(dset),
+     .			RECL = itemp,	! temporary var needed by DEC/RISC
+     .			EXIST = file_exists,
+     .			OPENED = file_open,
+     .			ERR = 9000)
+	  IF (.NOT. file_exists) GOTO 9100
+* calculate RECL in longwords for unformatted (if not open)             
+          IF (.NOT. file_open .AND. unformatted )
+     .	                         sf_reclen(sfcnt) = sf_reclen(sfcnt)/4
+        ENDIF                                                              
+*
+* get free VMS logical unit #   
+	CALL LIB_GET_LUN (lunit)
+*
+* open the file
+
+	IF ( stream ) THEN       ! 5/94
+	   OPEN	(UNIT = lunit,
+     .		 FILE = ds_des_name(dset),
+     .		 FORM = 'UNFORMATTED',
+     .		 ACCESS = 'DIRECT',
+#ifdef reclen_in_bytes
+     .		 RECL = 4,
+#else
+     .		 RECL = 1,
+#endif
+     .		 STATUS = 'OLD',
+     .		 ERR = 9000)
+	ELSE
+* added ifdef for READONLY_ALLOWED for IBM port *kob* 4apr94
+	   OPEN	(UNIT = lunit,
+     .		 FILE = ds_des_name(dset),
+     .		 FORM = file_format,
+     .		 ACCESS = 'SEQUENTIAL',
+     .		 STATUS = 'OLD',
+#ifdef READONLY_ALLOWED
+     .		 READONLY,
+#endif
+     .		 ERR = 9000)
+	ENDIF
+
+*
+* read "SKIP" records and initialize records read counter
+	GOTO skip_in
+  400	DO 425 scnt = 1,sf_skip(sfcnt)
+  425	READ (lunit,END=9200,ERR=9000)
+	GOTO 499
+  450	DO 475 scnt = 1,sf_skip(sfcnt)
+  475	READ (lunit,'(1X)',END=9200,ERR=9000)
+  499	nout = 0		! is number of values (per var) read so far
+*
+* Read depending on format, nrec counts number of records read
+	GOTO read_in
+* ... binary data
+
+  500	READ (lunit,END=800,ERR=9500) 
+
+	GOTO 690
+* ... fixed format data
+  600	READ (lunit,*,END=800,ERR=9500) 
+	GOTO 690
+
+* ... free format data
+  610   READ (lunit,*,END=800,ERR=9500) 
+	GOTO 690
+
+* ... stream
+  620   READ (lunit,rec=irec,ERR=9600) buff
+	irec = irec + 1
+
+  690	nout = nout + 1
+	GOTO read_in
+*
+* Finished, store records read and then exit
+  800	nread = nout 
+	status = merr_ok
+	GOTO 9950
+*
+* Error message
+ 9000	CALL TM_ERRMSG( merr_erreq, status, 'EZ_COUNT',
+     .			dset, sfcnt, 'during SKIP reads',
+     .			no_errstring, *9999                 )
+
+ 9100	CALL TM_ERRMSG( merr_notmounted, status, 'EZ_COUNT',
+     .			dset, sfcnt, 'DATAFILE NOT FOUND',
+     .			no_errstring, *9999                 )
+
+ 9200	CALL TM_ERRMSG( merr_eof, status, 'EZ_COUNT',
+     .			dset, sfcnt,
+     .			'during SKIP reads', no_errstring, *9950   )
+
+ 9300	CALL TM_ERRMSG( merr_dsetnf, status, 'EZ_COUNT',
+     .			no_descfile, no_stepfile,
+     .			no_errstring, no_errstring, *9999)
+
+ 9400	CALL TM_ERRMSG( merr_stepnf, status, 'EZ_COUNT',
+     .			dset, no_stepfile,
+     .			no_errstring, no_errstring, *9999)
+
+ 9500	BACKSPACE lunit
+	READ (lunit,'(A)') errbuff
+	CALL TM_ERRMSG( merr_erreq, status, 'EZ_COUNT',
+     .			dset, sfcnt,
+     .		'Last or next-to-last record read:'//cr//lf//errbuff,
+     .			no_errstring, *9999                 )
+
+ 9600	CALL TM_ERRMSG( merr_erreq, status, 'EZ_COUNT',
+     .			dset, no_stepfile,
+     .			'error reading STREAM file', no_errstring, *9999)
+
+*
+* Close file and free lunit
+ 9950	CLOSE (lunit, ERR=9990)
+ 9990	CALL LIB_FREE_LUN (lunit)
+        sf_lunit(sfcnt) = file_not_open    ! *sh* added 5/91
+ 9999	RETURN
+	END
diff --git a/fmt/src/tm_fmt.F b/fmt/src/tm_fmt.F
index 9886b29..20430cc 100644
--- a/fmt/src/tm_fmt.F
+++ b/fmt/src/tm_fmt.F
@@ -325,6 +325,7 @@
 	      ind = INDEX(outstring, '0E')
 	   ENDDO
 	ENDIF
+	str_len = TM_LENSTR1( outstring )
 
 	TM_FMT = outstring
 	RETURN
diff --git a/fmt/src/tm_secs_to_date.F b/fmt/src/tm_secs_to_date.F
index c7b274b..0a01975 100644
--- a/fmt/src/tm_secs_to_date.F
+++ b/fmt/src/tm_secs_to_date.F
@@ -56,7 +56,9 @@
 *       *ACm* 4/24/01 INT(tot_days/366. + 307./366.)  is 0 under linux,
 *                     when the expression is 1.  Use simple IF test on
 *		      tot_days instead to see if we're before or after day 59.
-* V63  *acm* 10/09 Changes for gfortran build
+* V692 *acm* 10/14 Trap errors in year, month, day etc before making the string 
+* V693 *acm* 11/13 back off previous change. Out-of-range time info is handled
+*                  elsewhere (Prev. change caused ticket 2116).
 
 * Argument definitions
 	REAL*8		num_secs
@@ -317,6 +319,7 @@ c acm	   tmp_days = tot_days - leapadj*INT(tot_days/366. + 307./366.)
 	END IF
 
 * Put it in a string
+
 	WRITE (tempstr,1000,ERR=5000) day, month_names(month), 
      .      year, hour, minute, second
 
@@ -328,6 +331,7 @@ c acm	   tmp_days = tot_days - leapadj*INT(tot_days/366. + 307./366.)
  5000	CALL TM_ERRMSG (merr_erreq, status, 'TM_SECS_TO_DATE',
      .			no_descfile, no_stepfile,
      .			no_errstring, no_errstring, *9000)
+
  9000	STOP
 
 * finished
diff --git a/fmt/src/xerror_text_data.F b/fmt/src/xerror_text_data.F
index 2cd0fe9..86086db 100644
--- a/fmt/src/xerror_text_data.F
+++ b/fmt/src/xerror_text_data.F
@@ -157,4 +157,6 @@
      .		/'error opening remote data file                    '/,
      .	msg_regular(merr_chunk_spec-pregular)
      .		/'error specifying chunk sizes                      '/
+     .	msg_regular(merr_time_string-pregular)
+     .		/'error creating time string                        '/
 	END
diff --git a/jnls/contrib/regressxy.jnl b/jnls/contrib/regressxy.jnl
deleted file mode 100644
index 0c2a65e..0000000
--- a/jnls/contrib/regressxy.jnl
+++ /dev/null
@@ -1,46 +0,0 @@
-\CANCEL MODE VERIFY 
-! Contributed by Andreas Schmittner 31 Oct 2001
-! Corrections by Jian Ma 08 Aug 2009
-!
-!
-! Description:  define FERRET variables for regression along the X and Y axis
-
-say ... Linear Regression In the XY Plane
-say ... Instructions:
-say Use the LET command to define new variables
-say Define the variable P as your independent (X) variable
-say Define the variable Q as your   dependent (Y) variable
-say Results will be variables "SLOPE", "INTERCEP" and "RSQUARE"
-say QHAT will be the regression estimate
-say Note: If "Y" is your independent variable then
-say ...   "SET GRID Q" after defining Q.
-say ... 
-
-let pq = p*q
-let pqmask = pq-pq  ! 0 or "missing" so all variables share the same
-missing
-let pmasked = p + pqmask
-let qmasked = q + pqmask
-let pp = pmasked*pmasked
-let qq = qmasked*qmasked
-
-let pave = pmasked[x=@ave,y=@ave]
-let qave = qmasked[x=@ave,y=@ave]
-let pqave = pq[x=@ave,y=@ave]
-let ppave = pp[x=@ave,y=@ave]
-let qqave = qq[x=@ave,y=@ave]
-
-let pvar  = ppave - pave*pave
-let qvar  = qqave - qave*qave
-let pqvar = pqave - pave*qave
-
-let slope = pqvar / pvar
-let intercep = qave - slope*pave
-let qhat = slope*p + intercep
-let rsquare = (pqvar*pqvar) / (pvar*qvar)
-let corr = pqvar/(pvar*qvar)^0.5
-
-SET MODE/LAST VERIFY
-
-
-
diff --git a/jnls/go/polymark.jnl b/jnls/go/polymark.jnl
index 21df7fd..5681154 100644
--- a/jnls/go/polymark.jnl
+++ b/jnls/go/polymark.jnl
@@ -26,7 +26,7 @@
 
 ! examples
 !       GO polymark polygon/over/key lon lat sst diamond
-
+!
 ! In detail, set cruise track and plot on a map:
 !       yes? LET xpts = 180 + 50*COS(2*3.14*I[I=1:50]/60)
 !       yes? LET ypts = 15  + 20*SIN(2*3.14*I[I=1:50]/60)
@@ -35,7 +35,12 @@
 !       yes? GO basemap x=120:250 Y=25s:65n 20
 !
 !       yes? GO polymark polygon/over/key/title="SST"  xpts,ypts,sst,ex, 0.5 
-
+!
+! NOTE: This script will fail if the polygon command contains a comma.
+!       To specify multiple options, i.e. /key=cont,horiz put the qualifier's
+!       arguments in quotes:
+!
+!       yes?  GO polymark polygon/over/key="center,horiz"  xpts,ypts,var
 
 ! argument check
 QUERY/IGNORE $1"<usage: yes? GO polymark polygon_command xpts ypts [values] [shape] [scale]"
diff --git a/palettes/QC_V3_by_level.spk b/palettes/QC_V3_by_level.spk
new file mode 100644
index 0000000..6d7197c
--- /dev/null
+++ b/palettes/QC_V3_by_level.spk
@@ -0,0 +1,16 @@
+RGB_Mapping By_Level
+ 
+! Level    Red  Green   Blue
+
+   1     0    0  100  ! blue		A
+   2     0   60   30  ! green		B
+   3   100   90    0  ! yellow		C
+   4   100    0    0  ! bright red	D
+   5    77   68   52  ! tan             E  Experimental
+   6    70    0  100  ! purple		F
+   7    80   90   10  ! light green     N New 
+   8    100  70  100  ! pink		Q Conflicting
+   9     0  100  100  ! cyan		U Updated
+  10   100   70    0  ! orange		S Suspended
+  11    20   20   20  ! Dk Gray		X Excluded
+
diff --git a/palettes/QC_regions.spk b/palettes/QC_regions.spk
new file mode 100644
index 0000000..57c7b3f
--- /dev/null
+++ b/palettes/QC_regions.spk
@@ -0,0 +1,14 @@
+RGB_Mapping By_level
+ 
+! Level    Red  Green   Blue
+ 1   100   10    0  ! bright red
+ 2     0    0  100  ! blue
+ 3    50  100   10  ! light green 
+ 4   100   90    0  ! yellow
+ 5    85    0  100  ! purple
+ 6     0  100  100  ! light blue
+ 7    90   88   69  ! Lt tan    
+ 8   100   70   00  ! orange 100   50    0
+ 9     0   60   30  ! green
+
+
diff --git a/palettes/brown_soft.spk b/palettes/brown_soft.spk
new file mode 100644
index 0000000..86e4f83
--- /dev/null
+++ b/palettes/brown_soft.spk
@@ -0,0 +1,2 @@
+  0   74  60  48 
+100   74  60  48 
diff --git a/palettes/coralreefwatch_dhw.spk b/palettes/coralreefwatch_dhw.spk
new file mode 100644
index 0000000..54a4896
--- /dev/null
+++ b/palettes/coralreefwatch_dhw.spk
@@ -0,0 +1,18 @@
+RGB_Mapping By_Value
+   0.00    0.0    0.0    0.0
+   1.00   39.2   39.2  100.0
+   2.00   39.2   39.2   78.4
+   3.00   39.2   39.2   58.8
+   4.00    0.0   54.9    0.0
+   5.00   58.8   66.7    0.0
+   6.00   78.4   78.4    0.0
+   7.00   58.8   78.4    0.0
+   8.00   78.4  100.0   47.1
+   9.00  100.0  100.0    0.0
+  10.00  100.0   78.4    0.0
+  11.00  100.0   62.7    0.0
+  12.00  100.0   49.0    0.0
+  13.00   78.4   19.6   39.2
+  14.00   68.6   19.6   29.4
+  15.00   58.8    0.0   58.8
+  16.00   78.4    0.0   78.4
diff --git a/palettes/coralreefwatch_dhw_pct_white.spk b/palettes/coralreefwatch_dhw_pct_white.spk
new file mode 100644
index 0000000..d5795e5
--- /dev/null
+++ b/palettes/coralreefwatch_dhw_pct_white.spk
@@ -0,0 +1,21 @@
+RGB_Mapping Percent
+   0.00   98.0   98.0   98.0
+   0.01   98.0   98.0   98.0
+   6.25   39.2   39.2  100.0
+  12.50   39.2   39.2   78.4
+  18.75   39.2   39.2   58.8
+  25.00    0.0   54.9    0.0
+  31.25   58.8   66.7    0.0
+  37.50   78.4   78.4    0.0
+  43.75   58.8   78.4    0.0
+  50.00   78.4  100.0   47.1
+  56.25  100.0  100.0    0.0
+  62.50  100.0   78.4    0.0
+  68.75  100.0   62.7    0.0
+  75.00  100.0   49.0    0.0
+  81.25   78.4   19.6   39.2
+  87.50   68.6   19.6   29.4
+  93.75   58.8    0.0   58.8
+  99.00   78.4    0.0   78.4
+ 100.00   75      75    75
+  
\ No newline at end of file
diff --git a/palettes/coralreefwatch_dhw_percent.spk b/palettes/coralreefwatch_dhw_percent.spk
new file mode 100644
index 0000000..73da0ad
--- /dev/null
+++ b/palettes/coralreefwatch_dhw_percent.spk
@@ -0,0 +1,21 @@
+RGB_Mapping Percent
+   0.00    0.0    0.0    0.0
+   0.01    0.0    0.0    0.0
+   6.25   39.2   39.2  100.0
+  12.50   39.2   39.2   78.4
+  18.75   39.2   39.2   58.8
+  25.00    0.0   54.9    0.0
+  31.25   58.8   66.7    0.0
+  37.50   78.4   78.4    0.0
+  43.75   58.8   78.4    0.0
+  50.00   78.4  100.0   47.1
+  56.25  100.0  100.0    0.0
+  62.50  100.0   78.4    0.0
+  68.75  100.0   62.7    0.0
+  75.00  100.0   49.0    0.0
+  81.25   78.4   19.6   39.2
+  87.50   68.6   19.6   29.4
+  93.75   58.8    0.0   58.8
+  99.00   78.4    0.0   78.4
+ 100.00   75      75    75
+  
\ No newline at end of file
diff --git a/palettes/coralreefwatch_hotspot.spk b/palettes/coralreefwatch_hotspot.spk
new file mode 100644
index 0000000..4f12027
--- /dev/null
+++ b/palettes/coralreefwatch_hotspot.spk
@@ -0,0 +1,127 @@
+   0.39  100.0  100.0  100.0
+   1.18  100.0   98.0   98.0
+   1.96  100.0   96.5   96.9
+   2.75  100.0   94.9   96.1
+   3.53  100.0   93.3   95.7
+   4.31  100.0   91.8   95.3
+   5.10  100.0   90.2   95.3
+   5.88  100.0   88.2   95.7
+   6.67  100.0   86.7   96.5
+   7.45  100.0   85.1   97.6
+   8.24  100.0   83.5   98.8
+   9.02   99.2   82.0  100.0
+   9.80   97.3   80.4  100.0
+  10.59   94.5   78.4  100.0
+  11.37   92.2   76.9  100.0
+  12.16   89.4   75.3  100.0
+  12.94   86.3   73.7  100.0
+  13.73   82.7   72.2  100.0
+  14.51   79.2   70.6  100.0
+  15.29   74.1   68.6  100.0
+  16.08   69.8   67.1  100.0
+  16.86   65.9   66.3  100.0
+  17.65   64.3   67.8  100.0
+  18.43   62.7   69.8  100.0
+  19.22   61.2   72.2  100.0
+  20.00  100.0   84.7   12.9
+  20.78  100.0   84.7   12.9
+  21.57  100.0   84.7   12.9
+  22.35  100.0   84.7   12.9
+  23.14  100.0   82.7   12.5
+  23.92  100.0   82.7   12.5
+  24.71  100.0   82.7   12.5
+  25.49  100.0   80.4   12.2
+  26.27  100.0   80.4   12.2
+  27.06  100.0   80.4   12.2
+  27.84  100.0   78.4   11.8
+  28.63  100.0   78.4   11.8
+  29.41  100.0   78.4   11.8
+  30.20  100.0   76.1   11.4
+  30.98  100.0   76.1   11.4
+  31.76  100.0   76.1   11.4
+  32.55  100.0   76.1   11.4
+  33.33  100.0   74.1   11.0
+  34.12  100.0   74.1   11.0
+  34.90  100.0   74.1   11.0
+  35.69  100.0   71.8   10.6
+  36.47  100.0   71.8   10.6
+  37.25  100.0   71.8   10.6
+  38.04  100.0   69.8   10.2
+  38.82  100.0   69.8   10.2
+  39.61  100.0   69.8   10.2
+  40.39  100.0   67.5    9.8
+  41.18  100.0   67.5    9.8
+  41.96  100.0   67.5    9.8
+  42.75  100.0   65.1    9.4
+  43.53  100.0   65.1    9.4
+  44.31  100.0   65.1    9.4
+  45.10  100.0   65.1    9.4
+  45.88  100.0   62.7    9.0
+  46.67  100.0   62.7    9.0
+  47.45  100.0   62.7    9.0
+  48.24  100.0   60.8    8.6
+  49.02  100.0   60.8    8.6
+  49.80  100.0   60.8    8.6
+  50.59  100.0   58.4    8.2
+  51.37  100.0   58.4    8.2
+  52.16  100.0   58.4    8.2
+  52.94  100.0   58.4    8.2
+  53.73  100.0   56.1    7.8
+  54.51  100.0   56.1    7.8
+  55.29  100.0   56.1    7.8
+  56.08  100.0   53.7    7.5
+  56.86  100.0   53.7    7.5
+  57.65  100.0   53.7    7.5
+  58.43  100.0   51.4    7.1
+  59.22  100.0   51.4    7.1
+  60.00  100.0   51.4    7.1
+  60.78  100.0   49.0    6.7
+  61.57  100.0   49.0    6.7
+  62.35  100.0   49.0    6.7
+  63.14  100.0   46.7    6.3
+  63.92  100.0   46.7    6.3
+  64.71  100.0   46.7    6.3
+  65.49  100.0   46.7    6.3
+  66.27  100.0   44.3    5.9
+  67.06  100.0   44.3    5.9
+  67.84  100.0   44.3    5.9
+  68.63  100.0   42.0    5.5
+  69.41  100.0   42.0    5.5
+  70.20  100.0   42.0    5.5
+  70.98  100.0   39.2    5.1
+  71.76  100.0   39.2    5.1
+  72.55  100.0   39.2    5.1
+  73.33  100.0   36.9    4.7
+  74.12  100.0   36.9    4.7
+  74.90  100.0   36.9    4.7
+  75.69  100.0   34.5    4.3
+  76.47  100.0   34.5    4.3
+  77.25  100.0   34.5    4.3
+  78.04  100.0   34.5    4.3
+  78.82  100.0   31.8    5.1
+  79.61  100.0   31.8    5.1
+  80.39  100.0   31.8    5.1
+  81.18  100.0   29.4    3.5
+  81.96  100.0   29.4    3.5
+  82.75  100.0   29.4    3.5
+  83.53  100.0   27.1    3.1
+  84.31  100.0   27.1    3.1
+  85.10  100.0   27.1    3.1
+  85.88  100.0   24.3    2.7
+  86.67  100.0   24.3    2.7
+  87.45  100.0   24.3    2.7
+  88.24  100.0   22.0    2.4
+  89.02  100.0   22.0    2.4
+  89.80  100.0   22.0    2.4
+  90.59  100.0   22.0    2.4
+  91.37  100.0   19.2    2.0
+  92.16  100.0   19.2    2.0
+  92.94  100.0   19.2    2.0
+  93.73  100.0   16.5    1.6
+  94.51  100.0   16.5    1.6
+  95.29  100.0   16.5    1.6
+  96.08  100.0   14.1    1.2
+  96.86  100.0   14.1    1.2
+  97.65  100.0   14.1    1.2
+  98.43  100.0   11.4    0.8
+  99.22  100.0   11.4    0.8
diff --git a/palettes/coralreefwatch_sst.spk b/palettes/coralreefwatch_sst.spk
new file mode 100644
index 0000000..ed37852
--- /dev/null
+++ b/palettes/coralreefwatch_sst.spk
@@ -0,0 +1,127 @@
+   0.39    0.0    0.0    0.0
+   1.18    3.5    0.0    2.7
+   1.96    7.1    0.0    5.5
+   2.75   10.6    0.0    9.0
+   3.53   14.1    0.0   12.5
+   4.31   17.6    0.0   16.9
+   5.10   21.2    0.0   20.8
+   5.88   23.9    0.0   24.7
+   6.67   26.7    0.0   28.2
+   7.45   28.2    0.0   31.8
+   8.24   30.2    0.0   35.7
+   9.02   31.4    0.0   39.2
+   9.80   32.5    0.0   42.7
+  10.59   32.9    0.0   46.3
+  11.37   34.1    0.0   49.8
+  12.16   33.7    0.0   53.3
+  12.94   34.1    0.0   56.9
+  13.73   33.3    0.0   60.4
+  14.51   32.9    0.0   63.9
+  15.29   32.5    0.0   67.8
+  16.08   30.6    0.0   71.4
+  16.86   29.8    0.0   74.9
+  17.65   27.5    0.0   78.4
+  18.43   25.9    0.0   82.0
+  19.22   22.7    0.0   85.5
+  20.00   20.8    0.0   89.0
+  20.78   16.9    0.0   92.5
+  21.57   14.1    0.0   96.1
+  22.35    9.8    0.0  100.0
+  23.14    6.3    0.0  100.0
+  23.92    1.6    0.0  100.0
+  24.71    0.0    1.6  100.0
+  25.49    0.0    6.3  100.0
+  26.27    0.0    9.8  100.0
+  27.06    0.0   14.9  100.0
+  27.84    0.0   18.0  100.0
+  28.63    0.0   21.6  100.0
+  29.41    0.0   26.3  100.0
+  30.20    0.0   29.8  100.0
+  30.98    0.0   34.9  100.0
+  31.76    0.0   38.0  100.0
+  32.55    0.0   43.1  100.0
+  33.33    0.0   46.7  100.0
+  34.12    0.0   51.4  100.0
+  34.90    0.0   54.9  100.0
+  35.69    0.0   59.6  100.0
+  36.47    0.0   63.1  100.0
+  37.25    0.0   68.2  100.0
+  38.04    0.0   71.4  100.0
+  38.82    0.0   76.5  100.0
+  39.61    0.0   79.6  100.0
+  40.39    0.0   84.7  100.0
+  41.18    0.0   88.2  100.0
+  41.96    0.0   91.4  100.0
+  42.75    0.0   96.5  100.0
+  43.53    0.0  100.0  100.0
+  44.31    0.0  100.0   94.9
+  45.10    0.0  100.0   91.4
+  45.88    0.0  100.0   86.3
+  46.67    0.0  100.0   83.1
+  47.45    0.0  100.0   78.0
+  48.24    0.0  100.0   74.9
+  49.02    0.0  100.0   69.8
+  49.80    0.0  100.0   66.7
+  50.59    0.0  100.0   61.6
+  51.37    0.0  100.0   58.0
+  52.16    0.0  100.0   52.9
+  52.94    0.0  100.0   49.8
+  53.73    0.0  100.0   44.7
+  54.51    0.0  100.0   41.6
+  55.29    0.0  100.0   38.0
+  56.08    0.0  100.0   32.9
+  56.86    0.0  100.0   29.8
+  57.65    0.0  100.0   24.7
+  58.43    0.0  100.0   21.6
+  59.22    0.0  100.0   16.5
+  60.00    0.0  100.0   13.3
+  60.78    0.0  100.0    8.2
+  61.57    0.0  100.0    4.7
+  62.35    0.0  100.0    0.0
+  63.14    3.1  100.0    0.0
+  63.92    8.2  100.0    0.0
+  64.71   11.4  100.0    0.0
+  65.49   16.5  100.0    0.0
+  66.27   20.0  100.0    0.0
+  67.06   24.7  100.0    0.0
+  67.84   28.2  100.0    0.0
+  68.63   31.4  100.0    0.0
+  69.41   36.5  100.0    0.0
+  70.20   39.6  100.0    0.0
+  70.98   44.7  100.0    0.0
+  71.76   48.2  100.0    0.0
+  72.55   52.9  100.0    0.0
+  73.33   56.5  100.0    0.0
+  74.12   61.6  100.0    0.0
+  74.90   64.7  100.0    0.0
+  75.69   69.8  100.0    0.0
+  76.47   73.3  100.0    0.0
+  77.25   78.0  100.0    0.0
+  78.04   81.6  100.0    0.0
+  78.82   86.7  100.0    0.0
+  79.61   89.8  100.0    0.0
+  80.39   94.9  100.0    0.0
+  81.18   98.0  100.0    0.0
+  81.96  100.0   98.0    0.0
+  82.75  100.0   93.3    0.0
+  83.53  100.0   89.8    0.0
+  84.31  100.0   84.7    0.0
+  85.10  100.0   81.6    0.0
+  85.88  100.0   76.5    0.0
+  86.67  100.0   73.3    0.0
+  87.45  100.0   68.2    0.0
+  88.24  100.0   64.7    0.0
+  89.02  100.0   60.0    0.0
+  89.80  100.0   56.5    0.0
+  90.59  100.0   51.4    0.0
+  91.37  100.0   48.2    0.0
+  92.16  100.0   43.1    0.0
+  92.94  100.0   40.0    0.0
+  93.73  100.0   34.9    0.0
+  94.51  100.0   31.4    0.0
+  95.29  100.0   28.2    0.0
+  96.08  100.0   23.1    0.0
+  96.86  100.0   20.0    0.0
+  97.65  100.0   14.9    0.0
+  98.43  100.0   11.4    0.0
+  99.22  100.0    6.7    0.0
diff --git a/palettes/coralreefwatch_sstanomaly.spk b/palettes/coralreefwatch_sstanomaly.spk
new file mode 100644
index 0000000..9f0eb24
--- /dev/null
+++ b/palettes/coralreefwatch_sstanomaly.spk
@@ -0,0 +1,128 @@
+   0.39    0.0    0.0    0.0
+   1.18    3.5    0.0    2.7
+   1.96    7.1    0.0    5.5
+   2.75   10.6    0.0    9.0
+   3.53   12.2    0.0   11.0
+   4.31   15.7    0.0   14.9
+   5.10   19.6    0.0   18.8
+   5.88   21.2    0.0   20.8
+   6.67   23.9    0.0   24.7
+   7.45   26.7    0.0   28.2
+   8.24   28.2    0.0   31.8
+   9.02   29.0    0.0   33.7
+   9.80   31.0    0.0   37.3
+  10.59   32.2    0.0   40.8
+  11.37   33.3    0.0   44.3
+  12.16   32.9    0.0   46.3
+  12.94   34.1    0.0   49.8
+  13.73   33.7    0.0   53.3
+  14.51   34.1    0.0   56.9
+  15.29   34.1    0.0   58.8
+  16.08   32.9    0.0   62.4
+  16.86   32.9    0.0   65.9
+  17.65   32.5    0.0   67.8
+  18.43   30.6    0.0   71.4
+  19.22   29.8    0.0   74.9
+  20.00   27.5    0.0   78.4
+  20.78   26.7    0.0   80.0
+  21.57   23.5    0.0   83.9
+  22.35   21.6    0.0   87.5
+  23.14   18.0    0.0   91.0
+  23.92   16.9    0.0   92.5
+  24.71   14.1    0.0   96.1
+  25.49    9.8    0.0  100.0
+  26.27    6.3    0.0  100.0
+  27.06    4.7    0.0  100.0
+  27.84    0.0    0.0  100.0
+  28.63    0.0    3.1  100.0
+  29.41    0.0    6.3  100.0
+  30.20    0.0    9.8  100.0
+  30.98    0.0   14.9  100.0
+  31.76    0.0   18.0  100.0
+  32.55    0.0   20.0  100.0
+  33.33    0.0   24.7  100.0
+  34.12    0.0   28.2  100.0
+  34.90    0.0   32.9  100.0
+  35.69    0.0   34.9  100.0
+  36.47    0.0   38.0  100.0
+  37.25    0.0   43.1  100.0
+  38.04    0.0   46.7  100.0
+  38.82    0.0   49.8  100.0
+  39.61    0.0   52.9  100.0
+  40.39    0.0   56.5  100.0
+  41.18    0.0   59.6  100.0
+  41.96    0.0   63.1  100.0
+  42.75    0.0   68.2  100.0
+  43.53    0.0   71.4  100.0
+  44.31    0.0   73.3  100.0
+  45.10    0.0   78.0  100.0
+  45.88    0.0   81.6  100.0
+  46.67    0.0   86.3  100.0
+  47.45    0.0   88.2  100.0
+  48.24    0.0   91.4  100.0
+  49.02    0.0   96.5  100.0
+  49.80    0.0  100.0  100.0
+  50.20   94.9  100.0    0.0
+  50.59   94.9  100.0    0.0
+  51.37   94.9  100.0    0.0
+  52.16   96.5  100.0    0.0
+  52.94   98.0  100.0    0.0
+  53.73  100.0  100.0    0.0
+  54.51  100.0   98.0    0.0
+  55.29  100.0   98.0    0.0
+  56.08  100.0   94.9    0.0
+  56.86  100.0   93.3    0.0
+  57.65  100.0   91.4    0.0
+  58.43  100.0   89.8    0.0
+  59.22  100.0   89.8    0.0
+  60.00  100.0   86.7    0.0
+  60.78  100.0   84.7    0.0
+  61.57  100.0   83.1    0.0
+  62.35  100.0   81.6    0.0
+  63.14  100.0   81.6    0.0
+  63.92  100.0   78.0    0.0
+  64.71  100.0   76.5    0.0
+  65.49  100.0   74.9    0.0
+  66.27  100.0   73.3    0.0
+  67.06  100.0   73.3    0.0
+  67.84  100.0   69.8    0.0
+  68.63  100.0   68.2    0.0
+  69.41  100.0   66.7    0.0
+  70.20  100.0   64.7    0.0
+  70.98  100.0   64.7    0.0
+  71.76  100.0   63.1    0.0
+  72.55  100.0   60.0    0.0
+  73.33  100.0   58.0    0.0
+  74.12  100.0   56.5    0.0
+  74.90  100.0   56.5    0.0
+  75.69  100.0   54.9    0.0
+  76.47  100.0   51.4    0.0
+  77.25  100.0   49.8    0.0
+  78.04  100.0   48.2    0.0
+  78.82  100.0   48.2    0.0
+  79.61  100.0   46.7    0.0
+  80.39  100.0   43.1    0.0
+  81.18  100.0   41.6    0.0
+  81.96  100.0   40.0    0.0
+  82.75  100.0   40.0    0.0
+  83.53  100.0   38.0    0.0
+  84.31  100.0   34.9    0.0
+  85.10  100.0   33.3    0.0
+  85.88  100.0   31.4    0.0
+  86.67  100.0   31.4    0.0
+  87.45  100.0   29.8    0.0
+  88.24  100.0   28.2    0.0
+  89.02  100.0   24.7    0.0
+  89.80  100.0   23.1    0.0
+  90.59  100.0   23.1    0.0
+  91.37  100.0   21.6    0.0
+  92.16  100.0   20.0    0.0
+  92.94  100.0   16.5    0.0
+  93.73  100.0   14.9    0.0
+  94.51  100.0   14.9    0.0
+  95.29  100.0   13.3    0.0
+  96.08  100.0   11.4    0.0
+  96.86  100.0    8.2    0.0
+  97.65  100.0    6.7    0.0
+  98.43  100.0    6.7    0.0
+  99.22  100.0    4.7    0.0
diff --git a/palettes/fifteen_by_levels.spk b/palettes/fifteen_by_levels.spk
new file mode 100644
index 0000000..5eaa0ee
--- /dev/null
+++ b/palettes/fifteen_by_levels.spk
@@ -0,0 +1,18 @@
+RGB_Mapping By_level
+ 
+! Level  Red  Green  Blue
+      1    0  100    0  ! light green
+      2  100  100    0  ! yellow
+      3  100    0    0  ! bright red
+      4    0    0  100  ! blue
+      5  100   85   10  ! gold 100   85    0  
+      6  100    0  100  ! magenta
+      7   60    0   25  ! dark red
+      8    0  100  100  ! turquoise
+      9  100   50    0  ! orange
+     10   60    0  100  ! purple
+     11   60   80  100  ! light blue
+     12    0   60   15  ! green
+     13  100   60   70  ! pink
+     14   80   73   59  ! tan
+     15   66   56   10  ! olive
diff --git a/palettes/green_pine.spk b/palettes/green_pine.spk
new file mode 100644
index 0000000..fc11172
--- /dev/null
+++ b/palettes/green_pine.spk
@@ -0,0 +1,2 @@
+   0    0 30 20
+ 100    0 30 20
diff --git a/palettes/pale_green_blue.spk b/palettes/pale_green_blue.spk
new file mode 100644
index 0000000..a4da0fc
--- /dev/null
+++ b/palettes/pale_green_blue.spk
@@ -0,0 +1,9 @@
+! based on yellow_green_blue, with darker green at start
+     0.0    92.6    96.9    69.1
+    10.0    77.7    91.0    70.3
+    20.5    49.6    80.1    73.0
+    50.0    25.4    71.1    76.6
+    62.5    11.3    56.6    75.0
+    75.0    13.3    36.7    65.6
+    87.5    10.5    20.3    57.8
+   100.0     3.1    11.3    34.4
diff --git a/palettes/ten2_levels.spk b/palettes/ten2_levels.spk
new file mode 100644
index 0000000..5b479ed
--- /dev/null
+++ b/palettes/ten2_levels.spk
@@ -0,0 +1,13 @@
+RGB_Mapping By_level
+ 
+! Level    Red  Green   Blue
+      1  100.0   10.0    0.0  ! bright red
+      2    0.0    0.0  100.0  ! blue
+      3    0.0   60.0   30.0  ! green
+      4  100.0   90.0    0.0  ! yellow
+      5   70.0    0.0  100.0  ! purple
+      6   70.0    0.0    0.0  ! dark red
+      7    0.0  100.0  100.0  ! light blue
+      8  100.0   55.0    0.0  ! orange 100.0   50.0    0.0
+      9   50.0  100.0   10.0  ! light green 
+     10   66.0   56.0   10.0  ! olive
diff --git a/palettes/ten_bright_levels.spk b/palettes/ten_bright_levels.spk
new file mode 100644
index 0000000..2d4d158
--- /dev/null
+++ b/palettes/ten_bright_levels.spk
@@ -0,0 +1,15 @@
+RGB_Mapping By_level
+ 
+! Level    Red  Green   Blue
+ 1   100   10    0  ! bright red
+ 2     0    0  100  ! blue
+ 3    50  100   10  ! light green 
+ 4   100   90    0  ! yellow
+ 5    85    0  100  ! purple
+ 6   100   88   92  ! pink  
+ 7     0  100  100  ! light blue
+ 8    90   88   69  ! Lt tan    
+ 9   100   70   00  ! orange 100   50    0
+ 10    0   60   30  ! green
+
+
diff --git a/palettes/woce.spk b/palettes/woce.spk
new file mode 100644
index 0000000..090b971
--- /dev/null
+++ b/palettes/woce.spk
@@ -0,0 +1,7 @@
+RGB_Mapping By_value
+ 
+! Level  Red  Green  Blue
+      2    0  100    0  ! light green
+      3  100   85   10  ! gold 100   85    0 
+      4  100    0    0  ! bright red
+
diff --git a/platform_specific.mk.i386-linux b/platform_specific.mk.i386-linux
index 5f68d3f..d026ff9 100644
--- a/platform_specific.mk.i386-linux
+++ b/platform_specific.mk.i386-linux
@@ -90,7 +90,7 @@ endif
 # LD and LD_DYN_FLAGS only used for generating ferret_ef_mem_subsc.so
 	LD		= $(shell which gfortran)
 	LD_DYN_FLAGS	= -m32 -fPIC -shared -rdynamic -Xlinker --no-undefined \
-			  -L $(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
+			  -L$(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
 
 ## cancel the default rule for .f -> .o to prevent objects from being built
 ## from .f files that are out-of-date with respect to their corresponding .F file
diff --git a/platform_specific.mk.i386-linux-gnu b/platform_specific.mk.i386-linux-gnu
index 2124329..614d8a0 100644
--- a/platform_specific.mk.i386-linux-gnu
+++ b/platform_specific.mk.i386-linux-gnu
@@ -46,8 +46,7 @@ endif
 			  $(CAIRO_INCLUDE) \
 			  -I/usr/include/pango-1.0 \
 			  -I/usr/include/glib-2.0 \
-			  -I/usr/lib/glib-2.0/include \
-                          -I/usr/lib/i386-linux-gnu/glib-2.0/include \
+			  -I/usr/lib/i386-linux-gnu/glib-2.0/include \
 			  -I$(NETCDF4_DIR)/include
 
 	MYDEFINES	= -Dcrptd_cat_argument \
@@ -91,7 +90,7 @@ endif
 # LD and LD_DYN_FLAGS only used for generating ferret_ef_mem_subsc.so
 	LD		= $(shell which gfortran)
 	LD_DYN_FLAGS	= -m32 -fPIC -shared -rdynamic -Xlinker --no-undefined \
-			  -L $(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
+			  -L$(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
 
 ## cancel the default rule for .f -> .o to prevent objects from being built
 ## from .f files that are out-of-date with respect to their corresponding .F file
diff --git a/platform_specific.mk.intel-mac b/platform_specific.mk.intel-mac
index 7fee2d4..8d06d0f 100644
--- a/platform_specific.mk.intel-mac
+++ b/platform_specific.mk.intel-mac
@@ -71,9 +71,8 @@
 			  -ffixed-line-length-132 -fno-second-underscore -fno-backslash
 
 # LD and LD_DYN_FLAGS only used for generating ferret_ef_mem_subsc.so
-	LD		= $(shell which gfortran)
-	LD_DYN_FLAGS	= -m64 -fPIC -shared -Wl,-bundle \
-			  -L $(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
+	LD		= echo
+	LD_DYN_FLAGS	= 
 
 ## cancel the default rule for .f -> .o to prevent objects from being built
 ## from .f files that are out-of-date with respect to their corresponding .F file
@@ -91,5 +90,5 @@
 	$(FC) $(FFLAGS) -c $*.F -o $*.o
 
 #
-# End of platform_specific.mk.x86_64-linux
+# End of platform_specific.mk.intel-mac
 #
diff --git a/platform_specific.mk.x86_64-linux b/platform_specific.mk.x86_64-linux
index 2dcf35d..0c5ee85 100644
--- a/platform_specific.mk.x86_64-linux
+++ b/platform_specific.mk.x86_64-linux
@@ -94,8 +94,8 @@ endif
 # LD and LD_DYN_FLAGS only used for generating ferret_ef_mem_subsc.so
 	LD		= $(shell which gfortran)
 	LD_DYN_FLAGS	= -m64 -fPIC -shared -rdynamic -Xlinker --no-undefined \
-			  -L $(DIR_PREFIX)/pyferret_install/lib64/$(PYTHON_EXE)/site-packages/pyferret \
-			  -L $(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
+			  -L$(DIR_PREFIX)/pyferret_install/lib64/$(PYTHON_EXE)/site-packages/pyferret \
+			  -L$(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
 
 ## cancel the default rule for .f -> .o to prevent objects from being built
 ## from .f files that are out-of-date with respect to their corresponding .F file
diff --git a/platform_specific.mk.x86_64-linux-gnu b/platform_specific.mk.x86_64-linux-gnu
index a7cf5bf..fb315ed 100644
--- a/platform_specific.mk.x86_64-linux-gnu
+++ b/platform_specific.mk.x86_64-linux-gnu
@@ -50,8 +50,7 @@ endif
 			  $(CAIRO_INCLUDE) \
 			  -I/usr/include/pango-1.0 \
 			  -I/usr/include/glib-2.0 \
-			  -I/usr/lib64/glib-2.0/include \
-                          -I/usr/lib/x86_64-linux-gnu/glib-2.0/include \
+			  -I/usr/lib/x86_64-linux-gnu/glib-2.0/include \
 			  -I$(NETCDF4_DIR)/include
 
 	MYDEFINES	= -Dcrptd_cat_argument \
@@ -95,8 +94,8 @@ endif
 # LD and LD_DYN_FLAGS only used for generating ferret_ef_mem_subsc.so
 	LD		= $(shell which gfortran)
 	LD_DYN_FLAGS	= -m64 -fPIC -shared -rdynamic -Xlinker --no-undefined \
-			  -L $(DIR_PREFIX)/pyferret_install/lib64/$(PYTHON_EXE)/site-packages/pyferret \
-			  -L $(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
+			  -L$(DIR_PREFIX)/pyferret_install/lib64/$(PYTHON_EXE)/site-packages/pyferret \
+			  -L$(DIR_PREFIX)/pyferret_install/lib/$(PYTHON_EXE)/site-packages/pyferret
 
 ## cancel the default rule for .f -> .o to prevent objects from being built
 ## from .f files that are out-of-date with respect to their corresponding .F file
diff --git a/ppl/complot/symbel.F b/ppl/complot/symbel.F
index 14e1b82..933186a 100644
--- a/ppl/complot/symbel.F
+++ b/ppl/complot/symbel.F
@@ -70,6 +70,8 @@ C *ACM* 6/02   When there is a period or decimal point in the text, make
 C              a GKS dot there too, so it'll show up in small labels.
 C *acm* 7/02   Take out the MARKER calls that made dots. This caused trouble 
 C              when making encapsulated postscript from postscript.  
+C *acm* 10/14  Ticket 2203: on the 64-bit machines, the \\ for backspace
+C              should be \ .
 C
 C	CALL SYMBEL(X,Y,DEGRES,HEIGHT,NCHAR,STRING)
 C
@@ -274,6 +276,14 @@ C
 	IF(.NOT.ASCFNT.AND.(ICHR.EQ.'@'.OR.
      *		(ICHR.GE.'\'.AND.ICHR.LE.'_')))GOTO 80
 #endif
+
+* Some compliers store '\\' as a single character, others see it
+* as '\'.  
+
+	IF (KBKSP.NE.'\\') THEN
+	   IF(.NOT.ASCFNT.AND.(ICHR.EQ.'@'.OR.
+     *		(ICHR.GE.'\'.AND.ICHR.LE.'_')))GOTO 80
+	ENDIF 
 C
 C	CALCULATE POINTER
 C
diff --git a/ppl/include/PLT.INC b/ppl/include/PLT.INC
index 9aa9e15..fb96eee 100644
--- a/ppl/include/PLT.INC
+++ b/ppl/include/PLT.INC
@@ -11,13 +11,14 @@ C**
 C***********************************************************************
 C**
 C**
+* v691 5/14 *acm* Change name MOD to TEKMOD
 c
-	COMMON/PLT/ ICODE,WIDTH,HEIGHT,MOD,IR,LUN 
+	COMMON/PLT/ ICODE,WIDTH,HEIGHT,TEKMOD,IR,LUN
 c
 c	icode	plot type
 c	width	plot width (inches)
 c	height	plot height (inches)
-c	mod	tek model number
+c	tekmod	tek model number
 c	ir	baud rate
 c	lun	output unit number (unused?)
 c
diff --git a/ppl/plot/daxis.F b/ppl/plot/daxis.F
index 603901a..1c99f3c 100644
--- a/ppl/plot/daxis.F
+++ b/ppl/plot/daxis.F
@@ -59,6 +59,9 @@ C *acm* 10/09  Fix bug 1708: YAXIS2 call for log plots caused the tics for the
 C *acm*  5/12  Only draw the axis labels the first time the axes are made.
 C              Axes are repeated so axis lines and graticule lines are on top
 C              of other plot elements but the labels dont need to be.
+C *acm* 10/14  bug 2205. Polygon plots have extra calls because polygons can get 
+C              drawn on topof axes. This(?) causes the main label to not get 
+C              finished. For polygon plots only, draw the main label twice.
 C**
 C**    @(#)daxis.F	1.1    3/10/88
 C**
@@ -132,7 +135,6 @@ C	SETUP AXIS
 	   LXB = 0
 	ENDIF
 	noylab =  (ylab .EQ. ' ') 
-
 C
 C     DRAW AXIS, LEFT, RIGHT Y AXIS THEN TOP, BOTTOM XAXIS
 C
@@ -224,6 +226,7 @@ C
 C	DRAW AXIS LABELS
 C
 1000	CONTINUE
-        IF (mainlab .EQ. 1) CALL LABDRW(XF,YF,IFX,IFY)
+        IF (mainlab .GE. 1) CALL LABDRW(XF,YF,IFX,IFY)
+	CALL PPLGFLUSH
 	RETURN
 	END
diff --git a/ppl/plot/daxis2.F b/ppl/plot/daxis2.F
index ee2087e..c107873 100644
--- a/ppl/plot/daxis2.F
+++ b/ppl/plot/daxis2.F
@@ -48,6 +48,7 @@ C**
 *     MOD *JD* 10.91 to eliminate PLOT COMPLETE msg if in ferret
 *     MOD *sh* 6/99 with changes to IGRNPT call
 * v552 *acm* 3/03 Changes for multi-line labels.
+* V69+  5/14 *acm* Fix for ascii font in multi-line labels, ticket 2176
 
 	INCLUDE 'PARAMPL5.DAT'
 	INCLUDE 'AXIS.INC'
@@ -101,8 +102,8 @@ c        line_spacing = 1.4
         fontprefix = ""
         penprefix = ""
         DO 20 j = 1, numlines
-           CALL getlabfonts (labs(i), lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, ncr)
+           CALL getlabfonts (labs(i), lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, ncr)
 
 	   NCR = lnend(j) - lnbeg(j) + 1
 	   XMN=SYMWID(HLB,NCR+npen+nfont,
diff --git a/ppl/plot/labdrw.F b/ppl/plot/labdrw.F
index d1b8de1..4d5e906 100644
--- a/ppl/plot/labdrw.F
+++ b/ppl/plot/labdrw.F
@@ -47,6 +47,7 @@ C**
 C *kob* 04/07/96 passed in character strings had to be declared 
 C                with "*(*)" for the linux port 
 C *acm* v552 3/03 Longer strings and changes for multi-line labels.
+* V69+  5/14 *acm* Fix for ascii font in multi-line labels, ticket 2176
 
 	INCLUDE 'PARAMPL5.DAT'
 	INCLUDE 'AXIS.INC'
@@ -95,8 +96,8 @@ C  Y label. center each line
         fontprefix = ""
         penprefix = ""
         DO 10 j = 1, numlines
-           CALL getlabfonts (ylab, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+           CALL getlabfonts (ylab, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 
 	   YL=YLO+(YLEN-SYMWID(HYLAB, NCHR+npen+nfont,
      .                 penprefix(1:npen)//fontprefix(1:nfont)//
@@ -145,8 +146,8 @@ cc For fixing bug 1582: missing label on horizontal axis.
 cc This crept in with multi-line labels. no need for IF(LABELX.LT.0) here.
 cc	IF(LABELX.LT.0)THEN
 
-           CALL getlabfonts (xlab, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+           CALL getlabfonts (xlab, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 
 	   XL=XLO+(XLEN-SYMWID(HXLAB,NCHR+npen+nfont,
      .                 penprefix(1:npen)//fontprefix(1:nfont)//
@@ -209,8 +210,8 @@ C	Determine starting y position of main label
         penprefix = ""
 
         DO 50 j = 1, numlines
-           CALL getlabfonts (lab1, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+           CALL getlabfonts (lab1, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 	   XL=XLO+(XLEN-
      .          SYMWID(htnew,NCHR,lab1(lnbeg(j):lnend(j))))*.5/XF
 
diff --git a/ppl/plot/lev.F b/ppl/plot/lev.F
index f4bb4a1..363dd48 100644
--- a/ppl/plot/lev.F
+++ b/ppl/plot/lev.F
@@ -15,6 +15,8 @@ C**
 	INCLUDE 'PARAMPL5.DAT'
 	INCLUDE 'cont_inc.decl'
 	INCLUDE 'CONT.INC'
+	INCLUDE 'shade_vars.cmn'
+
 
 	CHARACTER PRSE*2048
 
@@ -72,6 +74,9 @@ C**
 *                 (Lavelle examples) 
 * v686 *acm* 1/14 Fix ticket 2123: labeling color bar when there is just one level
 * v686 *acm* 2/14 Fix ticket 2124: Do the above fix only in the subroutine KEY.
+* v692 *acm* 7/14 For centered key labels add a level to corresp to the upper bound
+*                 of the top color on thecolorbar, excluding the inf triangle.
+
 
 	parameter	(epsilon = 1e-6)
 
@@ -80,7 +85,6 @@ C**
         INTEGER ntop
         LOGICAL   TM_FPEQ_SNGL
 
-
 	IF(LABEL.EQ.' ')THEN
 	    NLEV=NLEV_DFLT
 	    IAUTOC=1
@@ -148,6 +152,7 @@ C
 		    CALL CMDERR(11,STRING,ISLEN,IERR)
 		    RETURN
 		ENDIF
+		
 		DO 100 I=1,NL
 		J=NLEV+I
 
@@ -261,5 +266,12 @@ C
 400	    CONTINUE
 	ENDIF
 	GOTO 200
-10	RETURN
+10	CONTINUE
+
+	IF (center_key_labels) THEN
+	   dz = zlev(nlev) - zlev(nlev-1)
+	   nlev = nlev + 1
+	   zlev(nlev) = zlev(nlev-1) + dz
+	ENDIF
+	RETURN
 	END
diff --git a/ppl/plot/opnppl.F b/ppl/plot/opnppl.F
index 40bdfe4..0d02a05 100644
--- a/ppl/plot/opnppl.F
+++ b/ppl/plot/opnppl.F
@@ -39,7 +39,7 @@
 *	Mod to not reference "getlog" routine for linux port *kob* 3.11.97	
 *       Mod to set SYM='*PPL$PLTNME' to value of meta_file *js* 7.25.97
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
-
+* v691 5/14 *acm* Change name MOD to TEKMOD
 C**
 C**    @(#)opnppl.F	1.1    3/10/88
 C**
@@ -183,11 +183,11 @@ C
 #endif
 
 	IF(TYPE(1:LEN).EQ.'TEK41XX'.OR.TYPE(1:LEN).EQ.'TEK4105')THEN
-		MOD=4107
-		CALL TKTYPE(MOD)
+		TEKMOD=4107
+		CALL TKTYPE(TEKMOD)
 	ELSE IF(TYPE(1:LEN).EQ.'TEK4014')THEN
-		MOD=4014
-		CALL TKTYPE(MOD)
+		TEKMOD=4014
+		CALL TKTYPE(TEKMOD)
 	ENDIF
 C
 C	OPEN ECHO FILE
diff --git a/ppl/plot/plotxy_ribbon.F b/ppl/plot/plotxy_ribbon.F
index a346347..069a6c6 100644
--- a/ppl/plot/plotxy_ribbon.F
+++ b/ppl/plot/plotxy_ribbon.F
@@ -61,6 +61,10 @@ C
 *               argument for setting up metafile plots.
 *  ACM  2/2013    ticket 2141. Fix the modulo operation when the longitude
 *                 range is over 360.
+* ACM   5/2014  Fixes for changes of color in combination with handling
+*               modulo longitude data
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
+*               
 
         include         'xinterrupt.cmn' ! 1/89 *sh*
         include         'ppl_in_ferret.cmn'
@@ -99,7 +103,7 @@ C
 
 	REAL datum, xlast, ylast, frac, dx, dy, xi, yi, xhalf, yhalf
 	INTEGER xpolybase, ypolybase, zpolybase, polysizemax, nl,
-     .		nvertex, low_index, colr_ndx, last_colr_ndx, 
+     .		nvertex, low_index, colr_ndx, last_colr_ndx, ncolors, 
      .		line_ndx, thick_offset, nseg, iseg, indx, inc
 	INTEGER GET_NDX, ibase, iline2
 
@@ -164,9 +168,12 @@ C  Set the contour/color levels
 
 * IPEN contains the thickness setting.
 
+	  ncolors = shd_levels
+	  if (rgb_mapping .eq. by_level) ncolors = ncl
+
 	  thick_offset = 0
-	  IF (ipen(i) .EQ. 2) thick_offset = (shd_levels+1) 
-	  IF (ipen(i) .EQ. 3) thick_offset = 2*(shd_levels+1) 
+	  IF (ipen(i) .EQ. 2) thick_offset = (ncolors+1) 
+	  IF (ipen(i) .EQ. 3) thick_offset = 2*(ncolors+1) 
 
 C     SET PLOT MODE
 
@@ -206,12 +213,15 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 		
 		last_bad = .FALSE.
 	        colr_ndx = GET_NDX (X(IY+J+ILINE2),colr_ndx)
+		CALL SET_RIBBON_NDX (colr_ndx)
 
 	        line_ndx = colr_ndx + thick_offset + low_index - 1
 	        IF (colr_ndx .EQ. -999) THEN 
 		   colr_ndx = bad_ribbon_ndx
 		   line_ndx = colr_ndx + low_index - 1
 		   last_bad = .TRUE.
+		ELSE
+		   nothing = 0
 		ENDIF
 
 		CALL COLOR (line_ndx) 
@@ -251,7 +261,7 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 	          IDN=0
 	        ELSE
 		
-	        CALL PLOT(XT,YT,IDN,0)
+	          CALL PLOT(XT,YT,IDN,0)
 
 		
 	          datx = X(K)
@@ -285,15 +295,19 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 	          CALL TRANS(I,datx,daty,XT,YT)
 		  xaddlast = xadd
 
-		  xhalf = xlast + (xt - xlast)/2
-		  yhalf = ylast + (yt - ylast)/2
-
-		  IF (RIBBON_FAST .OR. last_bad .AND.(.NOT.new_branch)) THEN 
-! go halfway between the last point and this one, using previous color.
-                     IF (last_bad .AND. bad_blank) THEN 
-		        CALL PLOT(xhalf,yhalf,0,0)
-		     ELSE
-		        CALL PLOT(xhalf,yhalf,IDN,0)
+! in LINE/FAST mode go halfway between the last point and this one, using previous color.
+	          IF (ITYPE(I).NE.3) THEN
+		     xhalf = xlast + (xt - xlast)/2
+		     yhalf = ylast + (yt - ylast)/2
+
+		     IF ((.NOT.new_branch)) THEN 
+		     IF (RIBBON_FAST .OR. last_bad) THEN 
+                        IF (last_bad .AND. bad_blank) THEN 
+		           CALL PLOT(xhalf,yhalf,0,0)
+		        ELSE
+		           CALL PLOT(xhalf,yhalf,IDN,0)
+		        ENDIF
+		     ENDIF
 		     ENDIF
 		  ENDIF
 
@@ -301,6 +315,7 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 		  IF (datum .EQ. -3.E33) datum = CMZGE  ! This value set in pplldx.
 		  
 	          colr_ndx = GET_NDX (datum,colr_ndx)
+		  CALL SET_RIBBON_NDX (colr_ndx)
 	          line_ndx = colr_ndx + thick_offset + low_index - 1
 
 	          IF (colr_ndx .EQ. -999 .AND.(.NOT.new_branch)) THEN
@@ -308,13 +323,16 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 		     colr_ndx = bad_ribbon_ndx
 		     line_ndx = colr_ndx + low_index - 1
 
-		     IF (bad_blank .AND. .NOT.last_bad) CALL PLOT(xhalf,yhalf,IDN,0)
+		     IF ((bad_blank .AND. .NOT.last_bad) .AND. 
+     .                   (ITYPE(I).NE.3)) CALL PLOT(xhalf,yhalf,IDN,0)
 		     IF (bad_blank) IDN = 0
-		  ENDIF
+		ELSE
+		   nothing = 0
+		ENDIF
 		  
 	          IF (line_ndx .LT. 1) line_ndx = 1
 
-	          IF (colr_ndx .NE. last_colr_ndx) THEN
+	          IF ( colr_ndx.NE.last_colr_ndx) THEN
 		     
 * In default (not fast) mode, draw sub-segments filling in all the colors
 * corresponding to the index range between the color at this point and the
@@ -323,7 +341,8 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 		     IF (.NOT.RIBBON_FAST .AND. 
      .                    .NOT.isbad .AND. .NOT.last_bad .AND.
      .                    ABS(colr_ndx-last_colr_ndx) .GT. 1 .AND.
-     .                    (.NOT.new_branch)) THEN
+     .                    (.NOT.new_branch) .AND. ITYPE(I).NE.3) THEN
+
 		        nseg = ABS(colr_ndx-last_colr_ndx) 
 		        frac = 1./FLOAT(nseg)
 		        dx = (xt-xlast)
@@ -345,12 +364,13 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 80	                CONTINUE
 			XT = xi  ! should already be??
 			YT = yi
-                     ELSEIF (.NOT.new_branch) THEN
-	                CALL PLOT(xhalf,yhalf,IDN,0)
-			CALL COLOR (line_ndx)
-	                CALL PLOT(xhalf,yhalf,IDN,0)
-	                CALL PLOT(XT,YT,IDN,0)
+                      ELSEIF (.NOT.new_branch) THEN
+	                IF (ITYPE(I).NE.3) CALL PLOT(xhalf,yhalf,IDN,0)
+			IF (colr_ndx.NE.last_colr_ndx) CALL COLOR (line_ndx)
+	                IF (ITYPE(I).NE.3) CALL PLOT(xhalf,yhalf,IDN,0)
+	                IF (.NOT.new_branch) CALL PLOT(XT,YT,IDN,0)
 		     ENDIF
+		     IF (colr_ndx.NE.last_colr_ndx) CALL COLOR (line_ndx)
 		  ENDIF
 
 	          CALL PLOT(XT,YT,IDN,0)
@@ -400,9 +420,14 @@ C     CHECK POINTS FOR OUT OF RANGE   (CM)
 
         CALL COLOR(1)
 *       DO THE KEY
-        IF (do_key .AND. .NOT.interrupted) CALL key     ! 1/89 - *sh*
-        CALL shade_key_cont(0)
-
+C     Generate a color/gray scale key.
+C     Restore standard key style afterward (do this here, to 
+C     catch both plot and plot/set calls).
+C     
+        if (do_key .AND. .NOT.interrupted) THEN
+            call key ! 1/89 - *sh*
+           CALL SHADE_KEY_CONT (0)
+        ENDIF
 	RETURN
 
 	END
diff --git a/ppl/plot/pplcmd_f.F b/ppl/plot/pplcmd_f.F
index e50dc3a..089498f 100644
--- a/ppl/plot/pplcmd_f.F
+++ b/ppl/plot/pplcmd_f.F
@@ -126,6 +126,8 @@ C              do not make small tics by default.
 * V6.8 *acm* 7/9/2012 For batch graphics on RHEL6, change ITS_BATCH_GRAPHICS
 *                     from logical to integer, then batch = ITS_BATCH_GRAPHICS().NE.0
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
+* v691 5/14 *acm* Change name MOD to TEKMOD
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
 
 c
 c	fromi	command file or device (/dev/tty or TT: for terminal)
@@ -486,7 +488,7 @@ C       More brain dead mods:
            GOTO 10
         ENDIF
 	CALL PLTYPE(ICODE)
-	CALL TKTYPE(MOD)
+	CALL TKTYPE(TEKMOD)
 	GOTO 10
 C     SIZE
 700	WIDTH=P(1)
@@ -501,8 +503,8 @@ C     SMOOTH
 	CALL SMOOTH(pplmem,NX,NY,NX,NY,IFIX(P(1)))
 	GOTO 10
 C     TKTYPE
-1000	MOD=IFIX(P(1))
-	CALL TKTYPE(MOD)
+1000	TEKMOD=IFIX(P(1))
+	CALL TKTYPE(TEKMOD)
 	GOTO 10
 C     XLAB
 1100	XLAB=LABEL
@@ -711,7 +713,7 @@ C
 	ENDIF
 	CALL BAUD(IR)
 	CALL PLTYPE(ICODE)
-	CALL TKTYPE(MOD)
+	CALL TKTYPE(TEKMOD)
 	GOTO 10
 4301	IF(.NOT.QUIETF)WRITE(LTTOUT,'(1X,A30,'' NOT FOUND'')')LABEL
 	GOTO 10
@@ -1673,16 +1675,16 @@ c
         ENDIF                                                      
         GOTO 10                                                    
 C       SHAKEY                                                     
-9160    call shade_key                                             
+9160    call shade_key (-1)
         goto 10                                                    
 C       SHASET                                                     
 9170    call shade_set                                             
         goto 10
                                                  
-C       S_KEY   (continuous color key)                                                   
+C       S_KEY   (continuous color key, center labels, horizontal)                                                   
 9165    ICODE=IFIX(P(1))
-        call shade_key_cont (ICODE)
-        call shade_key                                           
+        IF (ICODE .LE. 1) call shade_key_cont (ICODE)
+        call shade_key (ICODE)
         goto 10       
                                 
 C       SHADE_CELL   (use cellarray call for shade)                                                   
diff --git a/ppl/plot/ppldata.F b/ppl/plot/ppldata.F
index d6dc2ed..1bd85ca 100644
--- a/ppl/plot/ppldata.F
+++ b/ppl/plot/ppldata.F
@@ -60,6 +60,7 @@ C     for compatibility with Ferret use of symbols.
 *                If this is changed, also change it in fer/dat/xprog_state_data.F
 * V62  2/08 *acm*increase default number of contour levels to NLEV=30 (MODE NLEVELS)
 *                If this is changed, also change it in fer/dat/xprog_state_data.F
+* v691 5/14 *acm* Change name MOD to TEKMOD
 
 	INCLUDE 'PARAMPL5.DAT'
 	include 'axis_inc.decl'
@@ -184,7 +185,8 @@ C
 	DATA MNX,MNY,IMULT,IMCNT,DXM,DYM/4*0,10*1.4,10*1.2/
 	DATA XLENM,YLENM,IXM,IYM,MXBOT,MYLEF/10*5.5,10*4.,2*0,2*0/
 C
-	DATA ICODE,WIDTH,HEIGHT,MOD,IR,LUN/3,10.0,8.0,4010,110,8/
+	DATA ICODE,WIDTH,HEIGHT,IR,LUN/
+     .		3,10.0,8.0,110,8/
 C
 	DATA IBASE,PBUF/1,0/
 C
diff --git a/ppl/plot/prmtiv.F b/ppl/plot/prmtiv.F
index 80595ab..f77edb9 100644
--- a/ppl/plot/prmtiv.F
+++ b/ppl/plot/prmtiv.F
@@ -54,6 +54,8 @@ C              (axis data was read as double precision and converted to single
 C              after applying an offset.)
 * V683 12/12 *acm* Fix for applying a font setting in multiple line labels
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
+* V69+  5/14 *acm* Fix for ascii font in multi-line labels, ticket 2176
+
 C**
 C**
 C***********************************************************************
@@ -304,8 +306,8 @@ C
             fontprefix = ""
             penprefix = ""
             DO 20 j = 1, numlines
-               CALL getlabfonts (xlab, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+               CALL getlabfonts (xlab, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 
 	       IF(IPOS.LT.0)THEN
 		  YL=Y-(XWID+2.0*HXLAB)/YFF
@@ -436,8 +438,8 @@ c	    ENDIF
             fontprefix = ""
             penprefix = ""
             DO 30 j = 1, numlines
-               CALL getlabfonts (ylab, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+               CALL getlabfonts (ylab, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
 
 	       IF(IPOS.LT.0)THEN
 	           XL=XX-(YWID+HYLAB)/XFF
@@ -629,12 +631,12 @@ C
             fontprefix = ""
             penprefix = ""
             DO 40 j = 1, numlines
-               CALL getlabfonts (label, lnbeg, lnend, j, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+               CALL getlabfonts (label, lnbeg, lnend, j, fontprefix, 
+     .           npnew, nfnew, newfont, newpen, nchr)
+               XMN=SYMWID(CHSIZE,NCHR+npen+nfont, 
+     .           penprefix(1:npen)//fontprefix(1:nfont)// 
+     .           label(lnbeg(j):lnend(j))) 
 
-	       XMN=SYMWID(CHSIZE,NCHR+npen+nfont,
-     .                 penprefix(1:npen)//fontprefix(1:nfont)//
-     .                 label(lnbeg(j):lnend(j)))
 	       SHFT=0.0
 	       IF(IPOS.GT.0)THEN
 	   	   SHFT=-XMN
@@ -677,3 +679,4 @@ C
 
 	RETURN
 	END
+c!!!!!!!!!!!!!!!!!!!!!
diff --git a/ppl/plot/vecfld.F b/ppl/plot/vecfld.F
index ecf345b..d38fa91 100644
--- a/ppl/plot/vecfld.F
+++ b/ppl/plot/vecfld.F
@@ -75,6 +75,7 @@ C**
 * V686 *acm* 11/13 Allow symbol names to be up to 120 characters long
 * V687 *acm* 3/14 tickets 2151 and 2147: allow missing coordinate data in 3-arg 
 *                 and 4-arg plot commands. 
+* Patrick's example with vector drawn across branch cut.
 
 C	ARRAY X HOLD 2 GRIDS, U(X) IN THE FIRST
 C	NX BY NY GRID AND V(Y) IN THE SECOND
@@ -109,13 +110,15 @@ C
 
 	real xfuser,yfuser,xlousr,ylousr,zave,xt,yt
 	real xx2,yy2,zz,vfact,xtm,ytm,xtx,ytx,xx1,yy1,vx,vy,vclen
-	real thfact,xn,yn,xl,yl,dy,dx, alen, big,lmin,lmax, xadd
+	real thfact,xn,yn,xl,yl,dy,dx, alen, big,lmin,lmax, xadd, tol
 
 	logical done_nleft, done_nright
 	integer ic,i,j,lnblk,iln, overedge
 	integer TM_LENSTR1, slen, i1, i2
 
 	CHARACTER VECLAB*2048, buff*80, symbuff*120
+	
+	parameter (tol = 140.)
 
 C
 C	VECTOR,X,Y,VFACT,LABEL
@@ -207,6 +210,9 @@ C
 
 	DO 100 I=1,NX,VSKPX
 	DO 100 J=1,NY,VSKPY
+	IF (i.eq.52 .AND. j.eq.76) THEN
+	   slen = 1
+	ENDIF
 
         IF (IPT .GT. maxdot) THEN
            CALL doit_makedot(IPT,XDOT,YDOT)
@@ -333,7 +339,13 @@ C  draw an arrow head.
  60        CONTINUE
 
  70        CONTINUE
-           CALL PLOT(xxc+xadd,yyc,1,0)
+
+C Has the vector crossed a branch cut? If so don't draw across the plot...
+           IF ( ABS((xxc+xadd)-(xx1+xadd)).GT.tol .AND. units_degrees) THEN
+	      CALL PLOT(xxc+xadd,yyc,0,0)
+	   ELSE
+              CALL PLOT(xxc+xadd,yyc,1,0)
+	   ENDIF
            IF (xadd .EQ. 0) THEN
 	      lmin = MIN(lmin, xxc)
               lmax = MAX(lmax, xxc)
diff --git a/ppl/tmap_inc/plt_inc.decl b/ppl/tmap_inc/plt_inc.decl
index 00ec74a..06b06c5 100644
--- a/ppl/tmap_inc/plt_inc.decl
+++ b/ppl/tmap_inc/plt_inc.decl
@@ -2,11 +2,12 @@
 * COMMON for PLOT+ with all variables declared
 * created for TMAP usage by Steve Hankin 7/88
 * V68  *acm* 1/12  changes for double-precision ferret, single-precision pplus
+* v691 5/14 *acm* Change name MOD to TEKMOD
 
 	INTEGER	ICODE
 	REAL*4	WIDTH
 	REAL*4	HEIGHT
-	INTEGER	MOD
+	INTEGER TEKMOD
 	INTEGER	IR
 	INTEGER	LUN
 * requires: INCLUDE 'PPLV11INC:PLT.INC'                                     
diff --git a/ppl/tmap_inc/shade_vars.cmn b/ppl/tmap_inc/shade_vars.cmn
index 7d41652..c9d9748 100644
--- a/ppl/tmap_inc/shade_vars.cmn
+++ b/ppl/tmap_inc/shade_vars.cmn
@@ -18,6 +18,8 @@
 *	KUSER_LOC indicates whether user key locations are to be used
 *       ANNOTATE_KEY Flag: annotate min/max data field when open-ended levels used
 *	CUSTOM_COLORS determines whether a custom color map is to be defined
+*	CENTERED_LABELS determines whether colorbar labels are made between lines,
+*                       or if not set, on the lines between colors
 
 *	SHD_MIN,SHD_MAX are the minimum and maximum data values shaded
 *	SHD_LEVELS is the number of levels to use in shading
@@ -77,6 +79,8 @@
 *	ribbon_miss	rgb codes for the missing-value rep. on ribbon plots.
 * PyFr *kms* 5/13 Add alpha channel (opaque) variables SA,MSA
 * PyFr *kms* 7/13 Add overriding_alpha for overriding alpha/opacity (/OPACITY=)
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
+
 
 	integer		spec_size,max_windows,pattern_num
 	parameter	(spec_size=250,max_windows=12,pattern_num=50)
@@ -104,7 +108,7 @@
 	REAL*4		overriding_alpha
 
 	logical		fill_missing,even_histo,do_key,area_bundles
-	logical		vertical_key,kuser_loc(4),custom_colors
+	logical		vertical_key,kuser_loc(4),custom_colors,center_key_labels
 	logical		protect_used_colors
 
 	logical		buffer_empty, upperflg, upper_first
@@ -118,7 +122,7 @@
      .			   x_lo,x_hi,y_lo,y_hi,
      .			   bad_val, bad_ribbon_ndx,
      .			   fill_missing,even_histo,do_key,vertical_key,
-     .			   kuser_loc,custom_colors,
+     .			   kuser_loc,custom_colors,center_key_labels,
      .			   shd_min,shd_max,shd_levels,
      .			   kx_lo,kx_hi,ky_lo,ky_hi,
      .			   klab_size,klab_dig,klab_len,klab_incr,
diff --git a/ppl/tmapadds/SOURCE_FILES b/ppl/tmapadds/SOURCE_FILES
index 86feac6..0cdd0df 100644
--- a/ppl/tmapadds/SOURCE_FILES
+++ b/ppl/tmapadds/SOURCE_FILES
@@ -57,6 +57,7 @@ set_open_levels.F\
 set_override_opacity.F\
 set_pat_size.F\
 set_regular_plot.F\
+set_ribbon_ndx.F\
 set_window_size.F\
 setax_syms.F\
 setfont.F\
diff --git a/ppl/tmapadds/compute_histo_bins.F b/ppl/tmapadds/compute_histo_bins.F
index fd4cbb1..6278515 100644
--- a/ppl/tmapadds/compute_histo_bins.F
+++ b/ppl/tmapadds/compute_histo_bins.F
@@ -41,6 +41,7 @@
 * the fine structure in the data. 
 * V630  *acm* 9/09 Introduction of syntax for variance-based and histogram levels
 * V68  *acm* 1/12  changes for double-precision ferret, single-precision pplus
+* V691 *acm* 5/14  Define symbols containing histogram levels
 
         IMPLICIT NONE
         include 'parampl5_dat.decl'
@@ -66,6 +67,10 @@
 
       INTEGER i, ngood, ibin, n_per_bin
 
+      CHARACTER ppl_buff*2048, TM_FMT_SNGL*10, buff*10
+      INTEGER TM_LENSTR1, ier, ilen, slen, ist
+      LOGICAL TM_FPEQ_SNGL
+
       ngood = 0
       DO i = 1, nsize
          wrk(i) = z(i)
@@ -91,9 +96,29 @@
       zlev(1) = wrk(1)
       zlev(nlev2) = wrk(ngood)
 
-!      ... could smooth these some.
+*      ... could smooth these some.
 
       IAUTOC = 0  ! levels are already set so dont do it in set_levels.
 
+      USE_HIST = .TRUE.
+
+* Define the LEV_HISTO_LEVELS symbol here. It may be wanted in a PLOT/SET command
+* before setlab_syms would be executed.
+
+       IF (USE_HIST) THEN  
+          ppl_buff = 'LEV_HISTO_LEVELS '
+	  ilen = TM_LENSTR1(ppl_buff)+1
+          DO 200 i =1, nlev2
+	     buff = TM_FMT_SNGL(zlev(i), -2, 10, slen)
+             ppl_buff = ppl_buff(:ilen)//buff(:slen)
+	     ilen = TM_LENSTR1(ppl_buff)
+	     IF (i.LT.nlev2) ppl_buff = ppl_buff(:ilen)//','
+	     ilen = TM_LENSTR1(ppl_buff)
+  200     CONTINUE
+         ier = 0
+         ist = 0
+         CALL SETSYM (ppl_buff, ilen, ier, ist)
+      ENDIF
+
       RETURN
       END
diff --git a/ppl/tmapadds/compute_mnstd.F b/ppl/tmapadds/compute_mnstd.F
index 72193f3..f373d1e 100644
--- a/ppl/tmapadds/compute_mnstd.F
+++ b/ppl/tmapadds/compute_mnstd.F
@@ -43,7 +43,7 @@ C**
 * V666:  1/11 - fix bug 1778: missing data not treated correctly. Dont use CMZGE,
 *               so variance result is the same as other Ferret variance calculations
 * V68  *acm* 1/12  changes for double-precision ferret, single-precision pplus
-
+* V69+ *acm* 7/14 ticket 2186: more-robust mean and std deviation if big outliers
         IMPLICIT NONE
 	include 'parampl5_dat.decl'
         include 'PARAMPL5.DAT'
@@ -54,8 +54,6 @@ C**
 	include 'miss_inc.decl'
 	include 'MISS.INC'
 
-
-
 * calling argument declarations:
 	LOGICAL need_std
 	INTEGER nsize, status
@@ -67,13 +65,13 @@ C**
 
 * internal variable declarations:
 #ifdef double_p
-	REAL*8 sum, dev, sumsq_dev, variance
+	REAL*8 sum, dev, sumsq_dev, variance, tol_lo, tol_hi, zmean2
 #else
-	REAL sum, dev, sumsq_dev, variance
+	REAL sum, dev, sumsq_dev, variance, tol_lo, tol_hi, zmean2
 #endif
 
 	REAL*8 x, xmean, sum2, sumc, variance_c, xdelta
-	INTEGER i, n
+	INTEGER i, n, n2
 
 c  Already have zmin, zmax
 
@@ -125,7 +123,95 @@ c Compute data mean.
            variance_c = sum2/FLOAT(n - 1)
 	   zstd = SQRT(variance_c)
 
-        ENDIF
+* Ignore any data outside 3 STD
+           
+	   tol_lo = zmean - 3.*zstd
+	   tol_hi = zmean + 3.*zstd
+	   
+c Recompute data mean.
+ 
+	   sum = 0.0
+	   n2 = 0
+	   DO 200 i = 1, nsize
+              x = z(i)
+              IF ( x.NE.badz .AND. x.GT.tol_lo .AND. x.LT.tol_hi) THEN
+                 sum = sum + Z(i)
+                 n2 = n2 + 1
+              ENDIF
+  200      CONTINUE
+
+	   IF (n2 .EQ. 0) GOTO 5000
+	   IF (n2 .EQ. n) GOTO 4900
+
+#ifdef double_p
+	   zmean2 = sum/DBLE(n2)
+#else
+	   zmean2 = sum/FLOAT(n2)
+#endif
+	   n2 = 0
+	   xmean = 0.D0
+	   sum2 = 0.D0
+ 
+	   DO i = 1, nsize
+	      x = Z(i)
+	      IF ( x.NE.badz .AND. x.GT.tol_lo .AND. x.LT.tol_hi) THEN
+                 n2 = n2 + 1
+		 x = x - zmean2
+                 xdelta = x - xmean
+                 xmean = xmean + xdelta/FLOAT(n2)
+                 sum2 = sum2 + xdelta*(x - xmean)  ! This expression uses the new value of mean
+ 	      ENDIF
+	   ENDDO
+
+	   IF (FLOAT(n2)/FLOAT(n) .GT. 0.9) THEN
+              zmean = zmean2
+              variance_c = sum2/FLOAT(n2 - 1)
+              zstd = SQRT(variance_c)
+           ENDIF
+
+c Once more.
+           tol_lo = zmean - 3.*zstd
+           tol_hi = zmean + 3.*zstd
+ 
+           sum = 0.0
+           n2 = 0
+           DO 300 i = 1, nsize
+              x = z(i)
+              IF ( x.NE.badz .AND. x.GT.tol_lo .AND. x.LT.tol_hi) THEN
+                 sum = sum + Z(i)
+                 n2 = n2 + 1
+              ENDIF
+  300      CONTINUE
+           IF (n2 .EQ. 0) GOTO 5000
+#ifdef double_p
+           zmean2 = sum/DBLE(n2)
+#else
+           zmean2 = sum/FLOAT(n2)
+#endif
+	   n2 = 0
+	   xmean = 0.D0
+	   sum2 = 0.D0
+ 
+	   DO i = 1, nsize
+	      x = Z(i)
+	      IF ( x.NE.badz .AND. x.GT.tol_lo .AND. x.LT.tol_hi) THEN
+                 n2 = n2 + 1
+		 x = x - zmean2
+                 xdelta = x - xmean
+                 xmean = xmean + xdelta/FLOAT(n2)
+                 sum2 = sum2 + xdelta*(x - xmean)  ! This expression uses the new value of mean
+ 	      ENDIF
+	   ENDDO
+
+	   IF (FLOAT(n2)/FLOAT(n) .GT. 0.9) THEN
+              zmean = zmean2
+              variance_c = sum2/FLOAT(n2 - 1)
+              zstd = SQRT(variance_c)
+           ENDIF
+
+        ENDIF  ! need_std
+
+ 4900   CONTINUE
 
 * If user is resetting the mean, do that here
 	IF (centered) zmean = 0.
diff --git a/ppl/tmapadds/getlabfonts.F b/ppl/tmapadds/getlabfonts.F
index 1adfe28..98e872d 100644
--- a/ppl/tmapadds/getlabfonts.F
+++ b/ppl/tmapadds/getlabfonts.F
@@ -1,5 +1,5 @@
-      SUBROUTINE getlabfonts (lab, lnbeg, lnend, jln, npnew, nfnew, 
-     .           newfont, newpen, nchr)
+      SUBROUTINE getlabfonts (lab, lnbeg, lnend, jln, fontprefix,
+     .          npnew, nfnew, newfont, newpen, nchr)
 *
 *
 *  This software was developed by the Thermal Modeling and Analysis
@@ -40,70 +40,114 @@
 *                  one line to the next in multi-line lables, allow for
 *                  @Cnnn syntax.
 * V683 12/12 *acm* Fix for applying a font setting in multiple line labels
+* V69+  5/14 *acm* Fix for ascii font in multi-line labels, ticket 2176
 
 * Argument declarations
 
       IMPLICIT NONE
-      CHARACTER*(*) lab, newfont, newpen
+      CHARACTER*(*) lab, newfont, newpen, fontprefix
       INTEGER lnbeg(*), lnend(*), npnew, nfnew, nchr, jln
 
 * Local variable definitions
 
-      CHARACTER*1 fcode, fnext
-      INTEGER TM_LOC_STRING, ioc, loc, nloc
-      LOGICAL digit, isc
+      CHARACTER*1 fcode, fnext, ichr
+      INTEGER TM_LOC_STRING, ioc, loc, ii, nloc, eloc
+      LOGICAL digit, isc, ascfnt
 
       npnew = 0
       nfnew = 0
       newfont = ""
       newpen = ""
 
+* Is the current setting an ASCII font
+      ascfnt = (fontprefix(1:2).EQ.'@A' .OR. fontprefix(1:2).EQ.'@a') 
+
       nchr = lnend(jln) - lnbeg(jln) + 1
       ioc = 0
       loc = TM_LOC_STRING(lab(lnbeg(jln):lnend(jln)),"@",ioc)
 
       IF ( loc .GT. 0) THEN
-         fcode = lab(lnbeg(jln)+loc:lnbeg(jln)+loc)
-	 fnext = lab(lnbeg(jln)+loc+1:lnbeg(jln)+loc+1)
-
-	 digit = (fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') 
-	 digit = ( fnext .GE. '0' .AND. fnext .LE. '9')
-	 isc = ((fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') .AND.digit) 
-
-         IF (fcode .EQ. 'P'  .OR.  fcode .EQ. 'p') THEN
-            newpen(1:3) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+1)
-            npnew = 3
-         ELSE IF ((fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') .AND.digit) THEN
-            newpen(1:5) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+3)
-            npnew = 5
-         ELSE
-            newfont(1:3) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+1)
-            nfnew = 3
-
-         ENDIF
+
+* Is the ASCII font escaped before the first font/pen setting?
+         DO ii = lnbeg(jln), lnbeg(jln)+loc
+            ichr = lab(ii:ii)
+            IF (ichar(ichr) .eq.27 .AND. ii .LT. lnbeg(jln)+loc+1) THEN
+               ascfnt = .FALSE.
+	       eloc = ii
+	       GOTO 100
+	    ENDIF
+         ENDDO
+ 100     CONTINUE
+
+* Font/pen settings are only applied if it's not the ascii font or
+* the @ was escaped.
+
+	 IF (.NOT. ascfnt) THEN
+            fcode = lab(lnbeg(jln)+loc:lnbeg(jln)+loc)
+	    fnext = lab(lnbeg(jln)+loc+1:lnbeg(jln)+loc+1)
+   
+	    digit = (fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') 
+	    digit = ( fnext .GE. '0' .AND. fnext .LE. '9')
+	    isc = ((fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') .AND.digit) 
+
+            IF (fcode .EQ. 'P'  .OR.  fcode .EQ. 'p') THEN
+               newpen(1:3) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+1)
+               npnew = 3
+            ELSE IF ((fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') .AND.digit) THEN
+               newpen(1:5) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+3)
+               npnew = 5
+            ELSE 
+               newfont(1:3) = lab(lnbeg(jln)+loc-1:lnbeg(jln)+loc+1)
+               nfnew = 3
+
+            ENDIF
+	 ENDIF
          nloc = loc
 
+* Is the current setting an ASCII font
+         ascfnt = (fontprefix(1:2).EQ.'@A' .OR. fontprefix(1:2).EQ.'@a') 
+
 ! Save the last pen and font change on this line.
 
          DO WHILE (nloc .NE. 0) 
             ioc = ioc + 1
             nloc = TM_LOC_STRING(lab(lnbeg(jln):lnend(jln)),"@",ioc)
             IF (nloc .GT. 0) THEN
-               fcode = lab(lnbeg(jln)+nloc:lnbeg(jln)+nloc)
-               IF (fcode .EQ. 'P'  .OR.  fcode .EQ. 'p') THEN
-                 newpen(1:3) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+1)
-                 npnew = 3
-               ELSE IF (fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') THEN
-                 newpen(1:5) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+3)
-                 npnew = 5
-               ELSE
-
-                 newfont(1:3) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+1)
-                 nfnew = 3
-               ENDIF
-            ENDIF
-         ENDDO
-      ENDIF
+
+* Is the ASCII font escaped before the first font/pen setting?
+               DO ii = eloc+1, lnbeg(jln)+nloc+1
+                  ichr = lab(ii:ii)
+                  IF (ichar(ichr) .eq.27 .AND. ii .LT. lnbeg(jln)+nloc+1)  THEN
+                     ascfnt = .FALSE.
+	             GOTO 200
+                  ENDIF
+               ENDDO
+ 200           CONTINUE
+
+* Font/pen settings are only applied if it's not the ascii font or
+* the @ was escaped.
+
+	       IF (.NOT. ascfnt) THEN
+                  fcode = lab(lnbeg(jln)+nloc:lnbeg(jln)+nloc)
+                  IF (fcode .EQ. 'P'  .OR.  fcode .EQ. 'p') THEN
+                    newpen(1:3) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+1)
+                    npnew = 3
+                  ELSE IF (fcode .EQ. 'C'  .OR.  fcode .EQ. 'c') THEN
+                    newpen(1:5) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+3)
+                    npnew = 5
+                  ELSE
+
+                    newfont(1:3) = lab(lnbeg(jln)+nloc-1:lnbeg(jln)+nloc+1)
+                    nfnew = 3
+                  ENDIF
+
+	       ENDIF ! .not.ascfnt
+
+            ENDIF ! nloc.gt.0
+	    	       
+         ENDDO ! while nloc eq 0
+
+      ENDIF    ! loc gt 0
 
       RETURN
       END
diff --git a/ppl/tmapadds/key.F b/ppl/tmapadds/key.F
index 8189b16..b219982 100644
--- a/ppl/tmapadds/key.F
+++ b/ppl/tmapadds/key.F
@@ -111,8 +111,12 @@
 *                 don't let them run over each other. Locate the horizontal colorbar close to
 *                 the plot with labels above them. Behavior of args to SHAKEY is unchanged.
 * v686 *acm* 2/14 Fix ticket 2124: Do the fix for 2124 only here, not in subr. LEV.
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
+*                  For centered labels add a level to corresp to the upper bound of 
+*                  the top color on thecolorbar, excluding any upper inf triangle.
 
         IMPLICIT NONE
+
 	include 	'parampl5_dat.decl'
 	include 	'PARAMPL5.DAT'
 	include		'cont_inc.decl'
@@ -136,14 +140,15 @@
 
 	include        'gkspar.inc'
 
-	integer		ndx,str_len,max_len,incr,lab_digits, nhi, ncount,
-     .                  lab_add, nlab, i, kount, lev1, levn, nspace
+	integer ndx,str_len,max_len,incr,lab_digits, nhi, ncount,
+     .          lab_add, nlab, i, kount, lev1, levn, nspace, shd_lev_hi
 
 	real		x_inc,y_inc,px(4),py(4),rem,kpx(5),kpy(5),flaty(5),flatx(5)
 	real		xmaxx,ymaxx,vwidth,vheight,karht, ksiz_test
 	real		xx,yy,xxx,yyy, xx1, xxn, xxlen
         real            kx_lo_def, kx_hi_def, ky_lo_def, ky_hi_def,
-     .                  val, del, x_inc_inf, y_inc_inf, frac, fixx, inc_min
+     .                  val, del, x_inc_inf, y_inc_inf, frac, fixx, inc_min, 
+     .                  center_add
         real*8          val_n, val_last
 	character*12	text, TM_FMT_SNGL, TM_FMT_SNGL_DIGITS, 
      .			txt_out, blanks
@@ -165,6 +170,9 @@
 
 	cont_key_keep = cont_key
 
+	center_add = 0.
+	if (center_key_labels) center_add = 0.5
+
 * Decide whether to check for small numeric values in the key labels.
 * If delta is large, we dont want 0.000005 to be labelled in an exponential
 * format (it is zero with a bit of noise). But if all the numbers are 
@@ -245,8 +253,8 @@
            kx_lo_def = 1000.0 *  xorg
            kx_hi_def = 1000.0 * (xorg + xlen)
 
-           ky_lo_def = 1000.0 * (yorg + ylen)
-           ky_hi_def = 1000.0 * (yorg + ylen + 0.16*rem)
+           ky_lo_def = 1000.0 * (yorg + ylen + 0.05)
+           ky_hi_def = 1000.0 * (yorg + ylen + 0.05 + 0.16*rem)
 
         else
            rem = height - (ylen + yorg)
@@ -441,7 +449,11 @@ C	      text = TM_FMT_SNGL_DIGITS (val,lab_digits,klab_len+lab_add,str_len)
 
         IF (incr .GT. 0) THEN
 
-	do 20 ndx = lev1,shd_levels+1,incr
+	shd_lev_hi = shd_levels+1
+	IF (center_key_labels) shd_lev_hi = shd_levels
+	IF (center_key_labels .AND. posinf) shd_lev_hi = shd_lev_hi-1
+
+	do 20 ndx = lev1,shd_lev_hi,incr
 
 *	   WRITE OUT CORRESPONDING VALUE
 
@@ -453,7 +465,7 @@ C	     text = TM_FMT_SNGL_DIGITS (val,lab_digits,klab_len+lab_add,str_len)
              IF (ndx .EQ. 1 .AND. neginf) text = " "
              IF (ndx .EQ. shd_levels+1 .AND. posinf) text = " "
 
-	   xx = (kx_lo + x_inc*real(ndx-1))/1000.0
+	   xx = (kx_lo + x_inc*(center_add+real(ndx-1)))/1000.0
      .		 - karht*real(str_len)/2.0 - xorg
 	   yy = (ky_hi - 5.0 * y_inc)/1000.0 - yorg - 1.5*karht
            IF (kuser_loc(3) .OR. kuser_loc(4) ) 
@@ -663,7 +675,12 @@ c	IF ( no_lines ) cont_key = .TRUE.
 1010	continue
 
         IF (incr .GT. 0) THEN
-        do 1020 ndx = lev1,shd_levels+1,incr
+
+	shd_lev_hi = shd_levels+1
+	IF (center_key_labels) shd_lev_hi = shd_levels
+	IF (center_key_labels .AND. posinf) shd_lev_hi = shd_lev_hi-1
+
+        do 1020 ndx = lev1,shd_lev_hi,incr
 *	   WRITE OUT CORRESPONDING VALUE
              val = zlev(ndx)
              IF (TM_FPEQ_SNGL(val,0.) .AND. check_0) val = 0.
@@ -697,8 +714,8 @@ c	IF ( no_lines ) cont_key = .TRUE.
               ENDIF
            ENDIF
 
-	   yy = (ky_lo + y_inc*real (ndx-1))/1000.0 - yorg - 0.5*karht
-!	   yy = (ky_lo + y_inc*real (ndx-1))/1000.0 - yorg   (this caused bug 1330!)
+	   yy = ( ky_lo + y_inc* (center_add+ real(ndx-1)) )/1000.0 - 
+     .        yorg - 0.5*karht
 
 *	   FILL AND SHADE USE DIFFERENT COORD SYSTEMS -- *jd* 6.4.93
 
diff --git a/ppl/tmapadds/set_fill_ndx.F b/ppl/tmapadds/set_fill_ndx.F
index 05859e8..2712ff7 100644
--- a/ppl/tmapadds/set_fill_ndx.F
+++ b/ppl/tmapadds/set_fill_ndx.F
@@ -1,5 +1,38 @@
 	SUBROUTINE SET_FILL_NDX (fill_ndx)
 
+
+*  This software was developed by the Thermal Modeling and Analysis
+*  Project(TMAP) of the National Oceanographic and Atmospheric
+*  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
+*  hereafter referred to as NOAA/PMEL/TMAP.
+*
+*  Access and use of this software shall impose the following
+*  obligations and understandings on the user. The user is granted the
+*  right, without any fee or cost, to use, copy, modify, alter, enhance
+*  and distribute this software, and any derivative works thereof, and
+*  its supporting documentation for any purpose whatsoever, provided
+*  that this entire notice appears in all copies of the software,
+*  derivative works and supporting documentation.  Further, the user
+*  agrees to credit NOAA/PMEL/TMAP in any publications that result from
+*  the use of this software or in any product that includes this
+*  software. The names TMAP, NOAA and/or PMEL, however, may not be used
+*  in any advertising or publicity to endorse or promote any products
+*  or commercial entity unless specific written permission is obtained
+*  from NOAA/PMEL/TMAP. The user also understands that NOAA/PMEL/TMAP
+*  is not obligated to provide the user with any support, consulting,
+*  training or assistance of any kind with regard to the use, operation
+*  and performance of this software nor to provide the user with any
+*  updates, revisions, new versions or "bug fixes".
+*
+*  THIS SOFTWARE IS PROVIDED BY NOAA/PMEL/TMAP "AS IS" AND ANY EXPRESS
+*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+*  ARE DISCLAIMED. IN NO EVENT SHALL NOAA/PMEL/TMAP BE LIABLE FOR ANY SPECIAL,
+*  INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+*  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+*  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
+*  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
+*
 *	Sets fill index appropriately.  DEC uses bundled indices,
 *	at this date ATC has too few to use them, so must use individual
 *	attributes.
diff --git a/ppl/tmapadds/set_levels_shade_fill.F b/ppl/tmapadds/set_levels_shade_fill.F
index e871eae..2fb4da5 100644
--- a/ppl/tmapadds/set_levels_shade_fill.F
+++ b/ppl/tmapadds/set_levels_shade_fill.F
@@ -54,12 +54,13 @@
 	include		'cont_inc.decl'
 	include		'CONT.INC'
         include         'errmsg.parm'
+        include         'shade_vars.cmn'
 	
 * argument declarations
 	INTEGER		status
 
 * local declarations
-	REAL		dmin, dmax, dz, fm, znp, zmp, dzmax
+	REAL		dmin, dmax, dz, fm, znp, zmp, dzmax, del
 	INTEGER		i, m, jj
         LOGICAL		TM_FPEQ_SNGL
 
@@ -224,6 +225,23 @@ c	      NLEV2=0
 	   ELSE
 	      NLEV2=NLEV
               IF (neginf) zlev(1) = MIN( zlev(1), zmin-1. )
+
+* For centered labels add a level to corresp to the upper bound of 
+* the top color on thecolorbar, excluding the inf triangle.
+
+              IF (center_key_labels) THEN
+	         IF (posinf) THEN
+	            del = zlev(nlev-1) - zlev(nlev-2)
+	            nlev = nlev + 1
+	            zlev(nlev-1) = zlev(nlev-1) + del
+		 ELSE
+	            del = zlev(nlev) - zlev(nlev-1)
+	            nlev = nlev + 1
+	            zlev(nlev) = zlev(nlev-1) + del
+                 ENDIF
+	         nlev2 = nlev
+              ENDIF
+
               IF (posinf) zlev(nlev) = MAX (zlev(nlev), zmax+1. )
 
 C Compute the digits in the contour levels, and line characteristics
diff --git a/fer/ef_utility/ef_get_string_arg_element_sub.F b/ppl/tmapadds/set_ribbon_ndx.F
similarity index 64%
copy from fer/ef_utility/ef_get_string_arg_element_sub.F
copy to ppl/tmapadds/set_ribbon_ndx.F
index 3f4bc5f..8192e99 100644
--- a/fer/ef_utility/ef_get_string_arg_element_sub.F
+++ b/ppl/tmapadds/set_ribbon_ndx.F
@@ -1,7 +1,5 @@
-* ef_get_string_arg_element_sub.F
-*
-*  acm 12/03  from ef_get_arg_string
-*
+	SUBROUTINE SET_RIBBON_NDX (colr_ndx)
+
 *  This software was developed by the Thermal Modeling and Analysis
 *  Project(TMAP) of the National Oceanographic and Atmospheric
 *  Administration's (NOAA) Pacific Marine Environmental Lab(PMEL),
@@ -34,30 +32,22 @@
 *  CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
 *  CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. 
 *
-* This returns an element of the string array which was passed as an argument
-* to the function.  
-*
-* Inside this subroutine arg is an array of pointers (cast as real*8),
-* and we can call GET_STRING_ELEMENT to get a string element.
-*
-*       3/12 *kms* Added E and F dimensions
+*	Sets ribbon color index appropriately.  
+
+        include         'shade_vars.cmn'
+	include		'gkscm1_inc.decl'
+	include		'GKSCM1.INC'
+        include		'gkspar.inc'
+
+	INTEGER		colr_ndx
 
-      SUBROUTINE EF_GET_STRING_ARG_ELEMENT_SUB( lox, hix, loy, hiy,
-     .                  loz, hiz, lot, hit, loe, hie, lof, hif, arg,
-     .                  i, j, k, l, m, n, max_line_len, slen, text )
+*******************************************************************************
 
-      INTEGER i, j, k, l, m, n,
-     .        lox, hix, loy, hiy, loz, hiz, 
-     .        lot, hit, loe, hie, lof, hif,
-     .        slen, max_line_len
-      CHARACTER*(*) text
-      REAL*8 arg(lox:hix, loy:hiy, loz:hiz, lot:hit, loe:hie, lof:hif)
+	IF (colr_ndx .EQ. -999) RETURN
 
-      CHARACTER GET_STRING_ELEMENT*512
+*	   USE ATOMIC COLORS -- REUSE AS NECESSARY
+	if (rgb_mapping .eq. by_level) colr_ndx = mod(colr_ndx-2,ncl) + 2
 
-      text = GET_STRING_ELEMENT(lox, hix, loy, hiy, loz, hiz,
-     .                          lot, hit, loe, hie, lof, hif, arg,
-     .                          i, j, k, l, m, n, max_line_len, slen)
+	return
+	end
 
-      RETURN
-      END
diff --git a/ppl/tmapadds/shade_key.F b/ppl/tmapadds/shade_key.F
index f4c9edd..4780811 100644
--- a/ppl/tmapadds/shade_key.F
+++ b/ppl/tmapadds/shade_key.F
@@ -1,4 +1,4 @@
-        SUBROUTINE SHADE_KEY
+        SUBROUTINE SHADE_KEY (isetting)
         
 *
 *
@@ -45,6 +45,7 @@
 *           reset any of the four, and others will be filled in by making 
 *           the key the default size in that direction.  See key.F
 * v581 *acm* 3/05 put flag cont_key into common CONT.INC
+* V6.92 *acm* 6/14 New color /key options: any of /key=horizontal,centerlabel
 
         IMPLICIT NONE
         include         'shade_vars.cmn'
@@ -59,7 +60,7 @@
 	include		'cont_inc.decl'
 	include		'CONT.INC'
 
-        INTEGER i
+        INTEGER isetting, i
 
 *******************************************************************************
 
@@ -74,6 +75,15 @@ c	do_key	     	= .true.   ! Still initialize this in setup_defaults.F
            kuser_loc(i) = .false.
   100   continue
 
+	IF (isetting .EQ. 0) THEN
+	   center_key_labels = .FALSE.
+	   vertical_key = .TRUE.
+	ENDIF
+
+* Option centered_labels on key (e.g. on discrete color settings, by-levels.)
+
+	IF (isetting .EQ. 2) center_key_labels = .TRUE.
+
 	klab_size = 0.0
 	klab_dig  = 3
 	klab_len  = 9
@@ -91,6 +101,7 @@ c	do_key	     	= .true.   ! Still initialize this in setup_defaults.F
      .	vertical_key = .false.
 	if (m .ge. 2 .and. iflg(2) .ne. 0 .and. p(2).eq.1.0) 
      .	vertical_key = .TRUE.
+        IF (isetting .EQ. 3) vertical_key = .FALSE.
 
 	if (m .ge. 3 .and. iflg(3) .ne. 0) klab_size = p(3)
 	if (m .ge. 4 .and. iflg(4) .ne. 0) klab_incr = ifix (p(4))
diff --git a/ppl/tmapadds/ws_line_spectrum.F b/ppl/tmapadds/ws_line_spectrum.F
index 24cb1c0..cac977e 100644
--- a/ppl/tmapadds/ws_line_spectrum.F
+++ b/ppl/tmapadds/ws_line_spectrum.F
@@ -37,6 +37,7 @@
 *
 *	Routine to set up the line bundles for color-line plots
 * PyFr *kms* 5/13 Add alpha channel (opaque)
+* V691 *acm* 5/14 Fix when defining line bundles for a by-levels palette
 
         IMPLICIT NONE
 	include 'pltcom_dat.decl'
@@ -69,8 +70,8 @@
 	data		ltype/1,2,3,4,-3,-4/
 #endif
 
-	integer		max_pline,max_pmark,max_text,max_fill_area
-	integer		max_pattern,max_color,error
+	integer		max_pline, max_pmark, max_text, max_fill_area
+	integer		max_pattern, max_color, error, ncolors
 	integer		fktr, marktype, index, line_color_reserve,
      .			icolr, nthick, status, usable_colors, ndx
 
@@ -136,13 +137,16 @@
 	nthick = 3
 	low_index = MAX(num_line_colors* nthick + 2, lo_color_ndx(zwsid))
 
-	do 20 j = 1, shd_levels
+
+        ncolors = shd_levels
+        if (rgb_mapping .eq. by_level) ncolors = ncl
+	do 20 j = 1, ncolors
 	   do 10 fktr = 1,nthick     ! thickness
-              index = low_index + (fktr-1) * (shd_levels+1) + j
+              thickness = REAL(fktr)
               icolr = j + lo_color_ndx(zwsid) - 1
-              dotsize = 6.0 + fktr
+              index = low_index + (fktr-1) * (ncolors+1) + j
+              dotsize = 6.0 + thickness
               CALL FGD_GSPMR(zwsid, index, marktype, dotsize, icolr)
-              thickness = fktr
               CALL FGD_GSPLR(zwsid, index, 1, thickness, icolr)
 10	   continue
 20	continue
@@ -163,16 +167,16 @@
            b_val = ribbon_miss(3)/100.
            a_val = ribbon_miss(4)/100.
 	ENDIF
-	ndx = lo_color_ndx(zwsid)+shd_levels
+	ndx = lo_color_ndx(zwsid)+ncolors
 	CALL FGD_GSCR(zwsid,ndx,r_val,g_val,b_val,a_val)
 
-	do 40 j = shd_levels + 1, shd_levels + 1
+	do 40 j = ncolors + 1, ncolors + 1
 	   do 30 fktr = 1,nthick     ! thickness
-              index = low_index + (fktr-1) * (shd_levels+1) + j
+              thickness = REAL(fktr)
               icolr = j + lo_color_ndx(zwsid) - 1
-              dotsize = 6.0 + fktr
+              index = low_index + (fktr-1) * (ncolors+1) + j
+              dotsize = 6.0 + thickness
               CALL FGD_GSPMR(zwsid, index, marktype, dotsize, icolr)
-              thickness = fktr
               CALL FGD_GSPLR(zwsid, index, 1, thickness, icolr)
 30	   continue
 40	continue
diff --git a/pviewmod/pipedviewerpq.py b/pviewmod/pipedviewerpq.py
index 1c99e57..d30d049 100644
--- a/pviewmod/pipedviewerpq.py
+++ b/pviewmod/pipedviewerpq.py
@@ -747,12 +747,14 @@ class PipedViewerPQ(QMainWindow):
             # Set the image size
             try:
                 # Set custom paper size to just fit around the image
-                # printer.setPaperSize(QSizeF(imagewidth, imageheight),
-                #                      QPrinter.Inch)
+                if ( imagewidth > imageheight ):
+                    printer.setPaperSize(QSizeF(imageheight, imagewidth), QPrinter.Inch)
+                else:
+                    printer.setPaperSize(QSizeF(imagewidth, imageheight), QPrinter.Inch)
                 # The above has issues with Qt 4.6 at GFDL - 
                 # still puts it on the default letter size page.
                 # So just always use a letter size page.
-                printer.setPaperSize(QPrinter.Letter)
+                # printer.setPaperSize(QPrinter.Letter)
             except AttributeError:
                 # setPaperSize introduced in 4.4 and made setPageSize 
                 # obsolete; but RHEL5 Qt4 is 4.2, so set to letter size
@@ -1328,8 +1330,8 @@ class PipedViewerPQ(QMainWindow):
         except KeyError:
             if ( mybrush == Qt.NoBrush ):
                 raise ValueError( self.tr('drawPolygon called without a Brush or Pen') )
-            # Use a cosmetic Pen matching the brush
-            mypen = QPen(mybrush, 0.0, Qt.SolidLine, Qt.SquareCap, Qt.BevelJoin)
+            # Use a "cosmetic" Pen matching the brush
+            mypen = QPen(mybrush, 1.0, Qt.SolidLine, Qt.SquareCap, Qt.BevelJoin)
         self.__activepainter.setBrush(mybrush)
         self.__activepainter.setPen(mypen)
         self.__activepainter.drawPolygon(mypolygon)
@@ -1383,8 +1385,8 @@ class PipedViewerPQ(QMainWindow):
         except KeyError:
             if ( mybrush == Qt.NoBrush ):
                 raise ValueError( self.tr('drawPolygon called without a Brush or Pen') )
-            # Use a cosmetic Pen matching the brush
-            mypen = QPen(mybrush, 0.0, Qt.SolidLine, Qt.SquareCap, Qt.BevelJoin)
+            # Use a "cosmetic" Pen matching the brush
+            mypen = QPen(mybrush, 1.0, Qt.SolidLine, Qt.SquareCap, Qt.BevelJoin)
         self.__activepainter.setBrush(mybrush)
         self.__activepainter.setPen(mypen)
         self.__activepainter.drawRect(myrect)
diff --git a/pyfermod/__init__.py b/pyfermod/__init__.py
index 1bd7ba5..76df873 100644
--- a/pyfermod/__init__.py
+++ b/pyfermod/__init__.py
@@ -128,8 +128,7 @@ def init(arglist=None, enterferret=True):
 
        -help:        print this help message and quit
 
-       -quiet        do not display the startup header or
-                     warning of import failures
+       -quiet        do not display the startup header
 
        -batch:       draw to <filename> (default "ferret.png") instead of
                      displaying to the console.  The file format will be
@@ -253,7 +252,9 @@ def init(arglist=None, enterferret=True):
 
     # Create the list of standard ferret PyEFs to create
     std_pyefs = [ ]
-    # The stats_* functions - depend on scipy
+    # stats_* functions that do not need scipy
+    std_pyefs.append("stats.stats_histogram")
+    # stats_* functions that depend on scipy
     try:
         import scipy
         std_pyefs.extend((
@@ -414,11 +415,11 @@ def init(arglist=None, enterferret=True):
                   "stats.stats_helper",
                   ))
     except ImportError:
-        if not my_quiet:
-            print >>sys.stderr, "    WARNING: Unable to import scipy;\n" \
-                                "             most stats_* Ferret functions will not be added."
-    # stats_* functions that do not need scipy
-    std_pyefs.append("stats.stats_histogram")
+        # if not my_quiet:
+        #     print >>sys.stderr, "    WARNING: Unable to import scipy;\n" \
+        #                         "             most stats_* Ferret functions will not be added."
+        pass
+
     # shapefile_* functions
     try:
         import shapefile
@@ -432,9 +433,11 @@ def init(arglist=None, enterferret=True):
                   "fershp.shapefile_writexyzval",
                   ))
     except ImportError:
-        if not my_quiet:
-            print >>sys.stderr, "    WARNING: Unable to import shapefile;\n" \
-                                "             shapefile_* Ferret functions will not be added."
+        # if not my_quiet:
+        #     print >>sys.stderr, "    WARNING: Unable to import shapefile;\n" \
+        #                         "             shapefile_* Ferret functions will not be added."
+        pass
+
     # regrid functions
     try:
         import ESMP
@@ -443,10 +446,11 @@ def init(arglist=None, enterferret=True):
                   "regrid.curv3srect",
                   ))
     except ImportError:
-        if not my_quiet:
-            print >>sys.stderr, "    WARNING: Unable to import ESMP;\n" \
-                                "             curv2rect* Ferret functions will not be added.\n" \
-                                "             Use curv_to_rect* functions instead"
+        # if not my_quiet:
+        #     print >>sys.stderr, "    WARNING: Unable to import ESMP;\n" \
+        #                         "             curv2rect* Ferret functions will not be added.\n" \
+        #                         "             Use curv_to_rect* functions instead"
+        pass
 
     # start ferret without journaling
     start(memsize=my_memsize, journal=False, verify=my_verify,
diff --git a/site_specific.mk b/site_specific.mk
index 9479ceb..333e22f 100644
--- a/site_specific.mk
+++ b/site_specific.mk
@@ -3,7 +3,7 @@
 
 ## Full path name of the directory containing this file (the ferret root directory).
 ## Do not use $(shell pwd) since this is included in Makefiles in other directories.
-DIR_PREFIX	= $(HOME)/pyferret-1.0.2-source
+DIR_PREFIX = $(HOME)/pyferret-1.1.0-source
 
 ## Machine type for which to build Ferret/PyFerret
 ##   x86_64-linux      for 64-bit RHEL
@@ -11,64 +11,66 @@ DIR_PREFIX	= $(HOME)/pyferret-1.0.2-source
 ##   i386-linux        for 32-bit RHEL
 ##   i386-linux-gnu    for 32-bit Ubuntu and many "free" Linux systems
 ##   i386-apple-darwin for MacOS
-BUILDTYPE	= $(HOSTTYPE)
-# BUILDTYPE	= x86_64-linux
-# BUILDTYPE	= x86_64-linux-gnu
-# BUILDTYPE	= i386-linux
-# BUILDTYPE	= i386-linux-gnu
-# BUILDTYPE	= i386-apple-darwin
-# BUILDTYPE	= intel-mac
+BUILDTYPE = $(HOSTTYPE)
+# BUILDTYPE = x86_64-linux
+# BUILDTYPE = x86_64-linux-gnu
+# BUILDTYPE = i386-linux
+# BUILDTYPE = i386-linux-gnu
+# BUILDTYPE = i386-apple-darwin
+# BUILDTYPE = intel-mac
 
 ## Python 2.x executable to invoke for build and install.
-PYTHON_EXE	= python2.6
-# PYTHON_EXE	= python2.7
+PYTHON_EXE = python2.6
+# PYTHON_EXE = python2.7
 ## The assignment of PYTHONINCDIR should not need any modifications
 PYTHONINCDIR   := $(shell $(PYTHON_EXE) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc()")
 
 ## Installation directory for built Ferret.  Using the "install"
 ## Makefile target circumvents the need to create the fer_*.tar.gz
 ## files just for creating a Ferret installation.
-INSTALL_FER_DIR	= $(FER_DIR)
+INSTALL_FER_DIR = $(FER_DIR)
 
 ## Installation directory for Cairo-1.8.8 static libraries
 ## (contains include and lib or lib64 subdirectories) for RHEL5.
 ## Do not give a location on other systems.  For these systems
 ## the system-wide shared-object Cairo libraries which are also
 ## used by Qt4 must be used.
-# CAIRO_DIR	=
-CAIRO_DIR	= /usr/local/cairo_188
+CAIRO_DIR =
+# CAIRO_DIR = /usr/local/cairo_188
 
 ## Installation directory for HDF5 static libraries
 ## (contains include and lib or lib64 subdirectories)
 ## Do not give a location if linking to netcdf shared-object libraries
-# HDF5_DIR	= /usr
-# HDF5_DIR	= /usr/local
-HDF5_DIR	= /usr/local/hdf5_189
-# HDF5_DIR	= /usr/local/hdf5-1.8.9
-# HDF5_DIR	= 
+# HDF5_DIR = /usr
+# HDF5_DIR = /usr/local
+HDF5_DIR = /usr/local/hdf5-1.8.9
+# HDF5_DIR = /usr/local/hdf5_189
+# HDF5_DIR = /usr/local/hdf5_189_64
+# HDF5_DIR = 
 
 ## Installation directory for NetCDF static or shared object libraries
 ## (contains include and lib or lib64 subdirectories)
 ## If HDF5_DIR (above) is empty, the shared-object netcdf libraries will be used.
-# NETCDF4_DIR	= /usr
-# NETCDF4_DIR	= /usr/local
-NETCDF4_DIR	= /usr/local/netcdf_4311
-# NETCDF4_DIR	= /usr/local/netcdf-4.3.1.1
+# NETCDF4_DIR = /usr
+# NETCDF4_DIR = /usr/local
+NETCDF4_DIR = /usr/local/netcdf-4.3.1.1
+# NETCDF4_DIR = /usr/local/netcdf_4311
+# NETCDF4_DIR = /usr/local/netcdf_4311_64
 
 ## Java home directory - this may be predefined
 ## from your shell environment.  If JAVA_HOME is defined,
 ## $(JAVA_HOME)/bin/javac and $(JAVA_HOME)/bin/jar is
 ## called to build threddsBrowser.jar; otherwise, it just
 ## uses javac and jar (from the path).
-# JAVA_HOME	= /usr/java/default
-# JAVA_HOME	= /usr/java/latest
-# JAVA_HOME	= /usr/lib/jvm/default-java
-# JAVA_HOME	= /usr/lib/jvm/java-oracle
-# JAVA_HOME	= /usr/lib/jvm/java-sun
-JAVA_HOME	= /usr/lib/jvm/java
-# JAVA_HOME	= /Library/Java/JavaVirtualMachines/jdk1.7.jdk/Contents/Home
+# JAVA_HOME = /usr/java/default
+# JAVA_HOME = /usr/java/latest
+# JAVA_HOME = /usr/lib/jvm/default-java
+# JAVA_HOME = /usr/lib/jvm/java-oracle
+# JAVA_HOME = /usr/lib/jvm/java-sun
+JAVA_HOME = /usr/lib/jvm/java
+# JAVA_HOME = /Library/Java/JavaVirtualMachines/jdk1.7.jdk/Contents/Home
 
 # PyFerret version number - do not change this
-PYFERRET_VERSION = 1.0.2
+PYFERRET_VERSION = 1.1.0
 
 ##

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pyferret.git



More information about the debian-science-commits mailing list