********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.13
                               December 21, 2012
********************************************************************************

The HEASoft 6.13 release is primarily driven by updates to the Swift
mission software, but also includes updates to other packages which
have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

- DEVELOP: Fixed flaw in the way logical columns (TFORM = 'L') in binary
  tables were read which caused an illegal value of 1 in the column to be
  interpreted as a 'T' (TRUE) value.

- Version 3.32:

  * Extended the column filtering syntax in the CFITSIO file name parser
    to enable users and scripts to append new COMMENT or HISTORY keyword
    into the header of the filtered file (provided by Craig Markwardt).
    For example,

     fcopy "infile.fits[col #HISTORY='Processed on 2012-10-05']" outfile.fits

    will append this header keyword: "HISTORY Processed on 2012-10-05".

  * Small change to the code that opens and reads an ASCII region file to
    return an error if the file is empty.

  * Fixed obscure sign propagation error when attempting to read the
    uncompressed size of a gzipped FITS file.  This resulted in a memory
    allocation error if the gzipped file had an uncompressed file size
    between 2^31 and 2^32 bytes.  Fix supplied by Gudlaugur Johannesson 
    (Stanford).

- Version 3.31:

  - Enhanced the CFITSIO column filtering syntax to allow the comma, in
    addition to the semi-colon, to be used to separate clauses, for example:
    [col X,Y;Z = max(X,Y)].  This was done because users are not allowed to
    enter the semi-colon character in the on-line Hera data processing
    system due to computer security concerns.

  - Enhanced the CFITSIO extended filename syntax to allow specifying image
    compression parameters (e.g. '[compress Rice]') when opening an existing
    FITS file with write access.  The specified compression parameters will
    be used by default if more images are appended to the existing file.

  - Modified drvrfile.c to do additional file secrity checks when CFITSIO
    is running within the HEASARC's Hera software system.  In this case
    CFITSIO will not allow FITS files to be created outside of the user's
    individual Hera data directory area.

  - Fixed an issue in fpack and funpack on Windows machines, caused by
    the fact that the 'rename' function behaves differently on Windows
    in that it does not clobber an existing file, as it does on Unix
    platforms.

  - Fixed bug in the way byte-swapping was being performed when writing 
    integer*8 null values to an image or binary table column.  

  - Added the missing macro definition for fffree to fitsio.h.

  - Modified the low level table read and write functions in getcol*.c and 
    putcol*.c to remove the 32-bit limitation on the number of elements. 
    These routines now support reading and writing more than 2**31 elements
    at one time. Thanks to Keh-Cheng Chu (Stanford U.) for the patch.

  - Modified Makefile.in so that the shared libcfitsio.so is linked against 
    pthreads and libm.

- Version 3.30:

  Enhancements

   * Added new routine called fits_is_reentrant which returns 1 or 0
     depending on whether or not CFITSIO was compiled with the -D_REENTRANT
     directive.  This can be used to determine if it is safe to use CFITSIO
     in multi-threaded programs.

   * Implemented much faster byte-swapping algorithms in swapproc.c based
     on code provided by Julian Taylor at ESO, Garching.  These routines
     significantly improve the FITS image read and write speed (by more
     than a factor of 2 in some cases) on little-endian machines (e.g.,
     Linux and Microsoft Windows running on x86 PCs) where byte-swapping
     is required.  This has no effect on big-endian machines (e.g., Macs). 
     Even faster performance can be achieved in some cases by invoking the
     new "--enable-sse2" or "--enable-ssse3" configure options when
     building CFITSIO on machines that have CPUs and compilers that support
     the SSE2 and SSSE3 machine instructions.

   * Added additional support for implicit data type conversion in cases
     where the floating point image has been losslessly compressed with
     gzip.  The pixels in these compressed images can now be read back as
     arrays of short, int, and long integers as well as single and double
     precision floating-point.

   * Modified fitsio2.h and f77_wrap.h to recognize IBM System z mainframes
     by testing if __s390x__ or __s390__ is defined.

   * Small change to ffgcrd in getkey.c so that it supports reading a blank
     keyword (e.g., a keyword whose name simply contains 8 space chracters).

   Bug Fixes

   * Fixed a bug in imcomp_decompress_tile that caused the tile-compressed
     image to be uncompressed incorrectly (even though the tile-compressed
     image itself was written correctly) under the following specific
     conditions:

      - the original FITS image has a "float" datatype (R*4) 
      - one or more of the image tiles cannot be compressed using the standard
        quantization method  and instead are losslessly compressed with gzip
      - the pixels in these tiles are not all equal to zero (this bug does
        affect tiles where all the pixels are equal to zero)
      - the program that is reading the compressed image uses CFITSIO's
        "implicit datatype conversion" feature to read the "float" image
        back into an array of "double" pixel values.

     If all these conditions are met, then the returned pixel values in
     the affected image tiles will be garbage, with values often ranging 
     up to 10**34.  Note that this bug does not affect the fpack/funpack
     programs, because funpack does not use CFITSIO's implicit datatype
     conversion feature when uncompressing the image.

********************************************************************************
                              CFITSIO PERL MODULE
********************************************************************************

Update to version 1.09 of the CFITSIO Perl module:

   http://hea-www.harvard.edu/~rpete/cfitsio/

2012-07-27

        * CFITSIO.pm: $VERSION = '1.09';
        * CFITSIO.xs: sync with cfitsio 3.31

  cfitsio v3.31 added a missing prototype for function fffree which
  conflicted with the existing definition in CFITSIO.xs.

********************************************************************************
                                    CCFITS
********************************************************************************

- Fixed a couple of problems with the FITS::addTable function.  It was not
  allowing a new table with a pre-existing HDU name even when the version
  number was different.  Also it was not writing the EXTVER keyword when
  the version number was > 1.

********************************************************************************
                                     HEASP
********************************************************************************

Library for manipulating spectra and responses, including a Python interface.
A detailed guide to the library and its use when writing programs or using
Python is available in $HEADAS/../heacore/help/headas_guide.pdf.

New in this release:

- Added unit conversions through calcXfactor and calcYfactor routines.

- Added a global SPerrorStack to improve error reporting. Entries
  are added to the stack using SPreportError and can be retrieved
  using SPgetErrorStack which returns a string. SPclearErrorStack
  resets the stack.

- Added modifications to all classes to handle case where user
  writes an extension of some type into a file which already contains
  an extension of the same type. Now writes the new extension with
  an EXTVER keyword set to one more than the highest EXTVER of other
  extensions of the same type in the file.

- Made checkCompatibility routines consistent across classes and
  added a check for units.

********************************************************************************
                   APE / XPI (Parameter Interface Libraries)
********************************************************************************

- Correct bug in which parameter values assigned a value of whitespace
  were instead inheriting parameter values from farther to the right
  on the command line, i.e. par2=" " parfive="yes" was assigning
  "yes" both to par2 and parfive.

- Preserve quoted whitespace (only) in parameter assignments, e.g. for
  the separator parameter in ftlist.

- New APE-based version of pquery to replace old XPI-based version.
  This fixes broken behavior in the following FTOOLS Perl scripts:
  FUTILS: fmodtab; TIME: day2time, time2day; HEASARC: makeregion,
  gisxspec, pspcxspec, wgaxspec.

- Fix XPI parameters tchat and lchat (terminal and log chatter) used in the
  following tasks: EXOSAT: cmadead, exoleuv, exomerge; FIMAGE: fvec2img;
  HEAO1: a2lcurve, a2source, dsdlcurve; HEASARC: nh, sky2xy, xy2sky; 
  OSO8: osopha, osorat; ROSAT: abc, bct, utc.par(abc); XIMAGE: mkcolor,
  mkhratio; XRONOS: autocor, crosscor, earth2sun, efold, efsearch, lcmath,
  lcstats, lcurve, listdata, powspec, timeskew.

********************************************************************************
                                   ATTITUDE
********************************************************************************

- atFunctions v3.3 (2012.11.22):

  Bug fix in atSetElement(), atSetElement2(), atSetElement3(), in the equation
  calculating "zzbar", the first time derivatitive of the mean anomaly.  The
  following constants have also been updated/corrected:

                          Original       Revised/corrected
                          --------------------------------
   static double gravc =    .0743666;        .0743668
   static double j2 =      .00108264;        .001082626
 
   static double dycon =      398599.;       398600.
   static double aj2 =    .001082628;        .001082626
   static double aj4 =      -2.12e-6;        -1.616e-6
   static double eradi =     6378.16;        6378.137

  A brief comparison of output between the original code and
  the revised code shows that the changes are small, with errors of the
  order 1-2 km, at the largest.  The biggest changes resulted not from the
  bug fix - a simple sign change - but from updating/fixing the constants.

  Comparison of output:

  Satellite [X, Y, Z] (km)
  -----------------------------------------------------------------------------------------------
                                                  X                 Y                 Z
  bug-fixed_code:  mjd= 56200.0000000000   5182.82270127579  -3213.41407482482   3288.36194675555
  original_code :  mjd= 56200.0000000000   5182.50469061843  -3213.81259433846   3288.47385908001

  bug-fixed_code:  mjd= 56220.0000000000   5263.44591867794  -2967.04673975258  -3408.89612834825
  original_code :  mjd= 56220.0000000000   5262.34360993661  -2969.55376653281  -3408.41672189663

  bug-fixed_code:  mjd= 55555.1234500000   4725.02005822229   4055.33660081729   3078.72232915383
  original_code :  mjd= 55555.1234500000   4727.31468669830   4053.32307841280   3077.85219344827
  -----------------------------------------------------------------------------------------------

  Mean motion / nbar  (radians per day)
  -------------------------------------------
  bug-fixed_code:   nbar =  94.51009698425256
  original_code :   nbar =  94.50989651601652

  bug-fixed_code:   nbar =  94.51152172197288
  original_code :   nbar =  94.51132124659411

  bug-fixed_code:   nbar =  94.33024342746587
  original_code :   nbar =  94.33004379113659
  -------------------------------------------

- aberrator: Update to task version 1.1.  Add 'orbext' parameter
  to support NuSTAR orbit extension named 'ORBIT'.  Add 'attcol'
  parameter to support either POINTING or QPARAM as input (previously
  was only POINTING).

- aspcorr: Pass through tristarid parameters for catalog cross-referencing
  (matchtol, uncount, unmag).

- newmakefilter: Improve loss of precision on J (32 bit unsigned integer)
  columns with large values.

- tristarid: Allow disabling catalog cross-referencing by passing
  matchtol < 0 and uncount < 0.  Bug fix: an externally supplied quaternion
  should not be ignored when there are insufficient sources (3+) to find a
  solution by triplet matching.

********************************************************************************
                                     PLT
********************************************************************************

- Prevent infinite loops when an input plt command file does not exist.

********************************************************************************
                                    PGPLOT
********************************************************************************

- Increase max output filename length to 128 characters (input can be longer).

********************************************************************************
                                    FUTILS
********************************************************************************

- fmodhead: Update to allow handling of HIERARCH keywords.

- ftabcopy: Invert order of Aw to wA in TFORM keyword for binary table output.

- fverify: Removed the overly-stringent test that the WCSAXESa keywords must
  precede any other WCS keyword.  Improved text of error messages about
  illegal characters in keyword name and illegal logical column values.  Fixed
  uninitialized variable bug that affected checks on the WCSAXES keyword.

********************************************************************************
                                   HEATOOLS
********************************************************************************

- ftcreate: Fixed bug on 64-bit Linux which caused extraneous TNULL keywords.

- ftverify: Removed the overly-stringent test that the WCSAXESa keywords must
  precede any other WCS keyword.  Improved text of error messages about illegal
  characters in keyword name and illegal logical column values.  Fixed
  uninitialized variable bug that affected checks on the WCSAXES keyword.

********************************************************************************
                                    HEAGEN
********************************************************************************

- barycorr:

   * Add command line option "-clockfile" which allows explicit designation
     of a clock offset correction file.

   * Add command line option "-dtmaxclock" which specifies the maximum time
     difference in seconds before a clock recalculation takes place.

   * Clock offset correction amount is now recalculated if -dtmaxclock is
     set to >0; AND time changes by more than -dtmaxclock value; OR time
     crosses midnight boundary; this accomodates rapidly changing NuSTAR
     clock over long observations.

   * Optimize the orbit code

   * Add NuSTAR as mission supported by barycorr (Andrew Davis, NuSTAR project)

   * Add nCC nustar clock correction

   * Note that the clock correction code is only invoked once at the
     start of the task - for any mission - so it does not capture clock
     offset variations during an observation.  

   * Refactor the nCC code into clock file reader, calculator and driver;
     could be reused for Swift.

- flx2xsp: Relocated from the ftools/heasarc package and rewritten.  This
  task creates spectra and response files for use in XSPEC from an input
  text file of fluxes and errors.  The new version adds two parameters 'xunit'
  and 'yunit' to allow multiple possible units for energy/wavelength and flux.  

- (NEW) flx2tab: Read an input text file with one or more model spectra and
  convert to an XSPEC table model file.

- (NEW) mkfiltrsp: Read an input text with a filter response to make a single
  channel response matrix.

- rgsrmfsmooth: Replacement version of task previously located in the
  ftools/spectral directory.  Smooths an XMM RGS response matrix for an
  extended source.

- (NEW) sdss2xsp: Program to convert SDSS FITS files into XSPEC PHA and RSP.
  Assumes that the SDSS resolving power is 2000 (sigma).

- libgeomag: New library comprised of routines in geomag.f, which was relocated
  from the attitude task "prefilter" to make the routines available to other
  missions.

- SwiftClock.pm: 
  Fixed minor bug in extrapolating in ASCII file (was ignoring last entry).

- swco.dat: 

********************************************************************************
                                   HEASARC
********************************************************************************

- flx2xsp, raysmith and mekal tasks relocated to heagen and Xspec components.

********************************************************************************
                                   EXTRACTOR
********************************************************************************

  Speed-up modification of fixwmp: decides whether a WMAP bin is in the
  region by checking whether its center is in the region instead of checking
  every pixel in the bin and looking for one which lies in the region.

  For the case of no TLMIN/MAX changed the default upper grade to GMAXSIZE-1
  which is currently 255. This was a change from the arbitrary value of 25
  which caused a problem for NuSTAR since they take grades up to 26 and
  currently have no TLMIN/MAX in their event files.

********************************************************************************
                                    XSELECT
********************************************************************************

- Fixes for the problem that xselect has a tendency to go into an infinite
  loop if a command is given the wrong argument.  Now it nicely passes the
  user back to the main prompt so they can try again.

- Improved plot device code so that filenames can be given for appropriate
  devices (e.g. "set device myplot.ps/cps").

********************************************************************************
                                     XSPEC
********************************************************************************

Version 12.8.0:

New features:

- Parallel-processing capability for specific tasks has been added
  by way of the new "parallel" command.  This allows the user to
  set a maximum number of processes to spawn when running certain
  XSPEC commands.  Currently the options for parallel-processing are
  limited to use with the "fit" and "error" and commands, though we
  plan to implement more in the near future.  This first implementation
  is considered to be a BETA release, and we look forward to hearing
  your comments and suggestions.

- XSPEC now distinguishes between the 'fit' statistic and the 'test' 
  statistic. The fit statistic is used to find the best-fit parameter
  values and errors while the test statistic is used to provide a
  goodness-of-fit. Consequently, the goodness command now uses 
  the test statistic. Separating these two classes of statistic has
  allowed us to add a number of new test statistics. These include 
  Kolmogorov-Smirnov and the related Anderson-Darling and Cramer-von
  Mises. Also new are the runs statistic, based on the number
  of runs of consecutive positive (or negative) residuals, and the Pearson 
  Chi-Square (pchi) statistic, Pearson's original test statistic.

- The basic Levenberg-Marquardt fit algorithm has undergone a number
  of changes. The most visible is an additional column in the output
  during the fit. |beta|/N is the norm of the vector of derivatives of
  the statistic with respect to the parameters divided by the number
  of parameters. At the best fit this should be zero so provides
  another measure of how well the fit is converging. |beta|/N can also
  be used as the criterion to stop the fit instead of the statistic
  delta although this is still considered experimental.

  Other internal changes to the fit algorithm are to treat the first
  iteration as a special case where only normalizations are allowed to
  change and to add the option of using delayed gratification, which
  can speed up convergence.

- New models: compmag, comptb, rgsxsrc. The latter is reinstated from
  it use in XSPEC v11.

- New plotting command "plot goodness", for plotting a histogram of the
  most recent "goodness" simulation.
  
- New tclout option "goodness sims" .

- Added the option of using the Goodman-Weare algorithm instead of 
  Metropolis-Hastings when using the chains command to run MCMC.

- Added the Whittle statistic for fitting models to power density spectra.

- If a data file is read which has RESPFILE="[]" then the response
  extensions (MATRIX, EBOUNDS) are read from the same file.

- Added support for a new type of model component: a mixing component
  which operates on the model pre-multiplied by the effective
  area. This is similar to the pile-up model type but allows for a
  models which require mixing between multiple spectra.

- Table model files can now have interpolated and additional parameters
  intermixed provided that additional parameters are indicated by
  METHOD=-1 in the PARAMETERS extension.

Enhancements previously released as patches to 12.7.1:

- The "plot chain" has a new "thin" option for thinning the display
  of chain points.
 
- Added a "tclout ignore" option for easy retrieval of currently ignored
  channels.  Similar capability added to PyXspec's Spectrum class.
  
All bug fixes to v12.7.1 released as patches are included in v12.8.0.
In addition the following problems have been corrected:

- The eqpair model used wrongly-sized arrays when multiple spectra were
  used with RMFs having varying numbers of photon energy bins.  Eqpair
  (plus eqtherm and compth) also needed a new default value for its
  optical depth parameter, which fixes the problem if parameter 4 is
  zero.

- A fit parameter which started close to the minimum/maximum could under
  some circumstances be incorrectly pegged at the maximum/minimum. 
  
- When the "error" command was run on a model with soft limits (ie.
  soft limits for some parameters set to a narrower range than hard
  limits), and the best fit value fell within the soft limit region,
  the displayed differences (in parentheses) were not consistent with
  the reported ? limits.

- Problem occurred in apec model when zero width lines were in the final
  energy bin.
  
- Fix to a potential normalization problem occurring in Lorentz model
  with low-energy large-width lines.
      
- When running initpackage/lmod from PyXspec on certain Linux builds,
  local models calling functions in XSPEC's xslib library producing
  unresolved symbol link errors.

New tools:

- "raysmith" and "mekal" tasks relocated here from the ftools/heasarc module,
  and "kbmodels" task relocated here from the ftools/spectral module.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn13 - updates since HEASOFT 6.12 include:

- Changes to bring xstar221bk --> xstar221bn:

  - elimination of big ajis rate matrix
  - new r matrix data for al, ni
  - larger data structures

- Increase length of ERRMSG to handle sprintf in Display_FITS_ParmTable()
  when number of values is large (kInterpolated case).

- Fixed error in heatt.f which turned off rrc luminosity.

- Changes to provide better calculation of optically thick models:
  Re-introduction of the tmpp factor in the transfer equation integration.
  Refinement of 2 sided clouds and inclusion of 2 sided escape.

- Changes to allow writing of step-by-step rrc emissivities (in routine
  fstepr3.f) Plus, expand maximum size of energy array to 10^6.

- Updates to allow 10^6 energy points, turbulent and thermal line widths
  to add in quadrature, Al II UV resonance line.

- Fix segfault occurring when XSTARDEBUG was not set in the environment.

********************************************************************************
                                     TIME
********************************************************************************

- day2time: Fixed mismatched 'timezero'-'time' parameter "get".

********************************************************************************
                                     FV
********************************************************************************

- For logical columns of a binary table, display 'U' (undefined) for illegal
  values (anything other than 'T', 'F', or 0) rather than interpreting the
  values as 'F'.

- Fixed bugs occurring when trying to display slices of a data cube FITs file.

- Avoid memory faults when trying to open a FITs file that has a binary table
  with non-zero variable length array columns but has no rows. 

- Fixed bugs (extra columns, incorrect row selections) in ASCII output when
  saving from a binary table.

- Increased precision in output ASCII file values and displayed table cells.

- Fixed exported text file from vector columns in a binary table (was only
  showing the first element)

- Fixed table "Edit Cell" function on x86_64.

- Fixed plotting in ds9 which was not correctly handling lower case column
  names.

- Fixed fv scripting error in which the existence of a $HOME/.fv directory was
  assumed.

- Allow directory paths that contain parentheses.

********************************************************************************
                                    SUZAKU
********************************************************************************

- hxdmkgainhist_gso:

  * Bug fix due to a change of the text xspec output.

- xisgtigen:

  * New parameter (hidden) 'wingti' (default "no") to maximize GTI
    for the window option or the psum mode. With wingti=yes, telemetry
    saturation is judged for each exposure of window (or each line in
    the psum mode).

- xisrmfgen:

  * New parameters: bi_si_edge_mode, fi_si_edge_mode

  * "bi_si_edge_mode" activates a new response model that improves
     the XIS1 response around Si K edge. "bi_si_edge_mode" is set
     to 1 by default.

  * Running xisrmfgen with "bi_si_edge_mode" of 0 produces the same
    RMF file as before.

  * "fi_si_edge_mode" is introduced just for future use. "fi_si_edge_mode"
    is set to 0 by default.

  * xisrmfgen does not run with "fi_si_edge_mode" of 1.

- Update to com_cli-2.08, to fix compilation with g95 0.93 on Mac OS X.

********************************************************************************
                                     SWIFT
********************************************************************************

- uvotgcn:
  * Write ASPCORR keyword if aspect correction taken from earlier processing
    of related information.

- uvotevtlc, uvotmaghist, uvotproduct, uvotsource:
  * Write column SATURATED.

- uvotimage, uvotoptsum:
  * Use sec2time instead of swifttime to convert MET to UTC for consistency with
    other Swift software

- uvotimsum:
  * Clarified error message logged when input image is not oriented North up.

- uvotmaghist:
  * Enabled LSS correction by default (there was a duplicate lssfile entry in
    the parameter file which disabled it by default).

- uvotproduct:
  * Using recent versions of ds9 for graphic generation had assorted issues
    with title and label placement and grid features. Added the gridfile
    parameter to allow the user to specify the grid file.  Use a custom
    ds9 v6 grid file if that version is detected.
  * Disallow timezero=0 since it has a meaning other than MET=0 to uvotmaghist
    (which this tool runs).

- uvotskycorr:
  * Disable catalog cross-referencing by default since it is not a necessary
    function of this tool.

********************************************************************************
                                 CONFIGURATION
********************************************************************************

- The installed architecture-specific directory name on Mac OS X (e.g.
  "i386-apple-darwin12.2.0") now accurately reflects the nature of the build
  (i386 vs. x86_64).  Previously the name was derived solely by config.guess
  based on the default state of the C compiler being used.

- The Xspec component - when built in isolation, i.e. without any other mission-
  specific or general utility packages present in the heasoft-6.13 code tree -
  will now default to a 64-bit build (x86_64-apple-darwinX.X.X) on Mac OS X.
  If desired, users may override this behavior to force a 32-bit build by
  configuring with the option '--enable-mac_32bit_build=yes'.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.14
                                August 6, 2013
********************************************************************************

The HEASoft 6.14 release is primarily driven by new software for the
NuSTAR mission and updates to the Swift mission software, but also
includes updates to other packages which have been revised to mirror
the current development versions in use at the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Version 3.35:

   - fixed problem with the default tile size when compressing images with
     fpack using the Hcompress algorithm.

   - fixed returned value ("status" instead of "*status") 

   - in imcompress.c, declared some arrays that are used to store the dimensions
     of the image from 'int' to 'long', to support very large images (at least
     on systems where sizeof(long) = 8),

   - modified the routines that convert a string value to a float or double
     to prevent them from returning a NaN or Inf value if the
     string is "NaN" or "Inf" (as can happen with gcc implementation of the
     strtod function).

   - removed/replaced the use of the assert() functions when locking or
     unlocking threads because they did not work correctly if NDEBUG is
     defined.

   - made modifications to the way the command-line file filters are parsed to
     1) remove the 1024-character limit when specifying a column filter,
     2) fixed a potential character buffer-overflow risk in fits_get_token, and
     3) improved the parsing logic to remove any possible of confusing
     2 slash characters ("//") in the string as the beginning of a 
     comment string.

   - modified configure and Makefile.in so that when building CFITSIO
     as a shared library on linux or Mac platforms, it will use the SONAME
     convention to indicate whether each new release of the CFITSIO
     library is binary-compatible with the previous version.  Application
     programs that link with the shared library will not need to be
     recompiled as long as the versions are compatible.  In practice,
     this means that the shared library binary file that is created (on
     Linux systems) will have a name like 'libcfitsio.so.I.J.K', where I is the
     SONAME version number, J is the major CFITSIO version number (e.g. 3),
     and K is the minor CFITSIO version number (e.g., 34).  Two link
     files will also be created such that
       libcfitsio.so -> libcfitsio.so.I, and
       libcfitsio.so.I -> libcfitsio.I.J.K
     Application programs will still run correctly with the new version of
     CFITSIO as long as the 'I' version number remains the same, but the
     applications will fail to run if the 'I' number changes, thus alerting
     the user that the application must be rebuilt.

   - fixed bug in fits_insert_col when computing the new table row width
     when inserting a '1Q' variable length array column.

  - modified the image compression routines so that the output compressed
     image (stored in a FITS binary table) uses the '1Q' variable length
     array format (instead of '1P') when the input file is larger than 4 GB.

   - added support for "compression directive" keywords which indicate how
     that HDU should be compressed (e.g., which compression algorithm to use,
     what tiling pattern to use, etc.).  The values of these keywords will
     override the compression parameters that were specified on the command 
     line when running the fpack FITS file compression program.

   - globally changed the variable and/or subroutine name "dither_offset" 
     to "dither_seed" and "quantize_dither" to "quantize_method" so
     that the names more accurately reflects their purpose.

   - added support for a new SUBTRACTIVE_DITHER_2 method when compressing
     floating point images.  The only difference with the previous method
     is that pixels with a value exactly equal to 0.0 will not be dithered,
     and instead will be exactly preserved when the image is compressed.

   - added support for an alias of "RICE_ONE" for "RICE_1" as the value
     of the ZCMPTYPE keyword, which gives the name of the image compression
     algorithm.  This alias is used if the new SUBTRACTIVE_DITHER_2 option
     is used, to prevent old versions of funpack from creating a corrupted
     uncompressed image file.  Only newer versions of funpack will recognize
     this alias and be able to uncompress the image. 
   
   - made performance improvement to fits_read_compressed_img so that 
     when reading a section of an compressed image that includes only 
     every nth pixel in some dimension, it will only uncompressed a tile 
     if there are actually any pixels of interest in that tile.

   - fixed several issues with the beta FITS binary table compression code
     that is used by fpack:  added support for zero-length vector columns,
     made improvements to the output report when using the -T option in fpack,
     changed the default table compression method to 'Rice' instead of 
     'Best', and now writes the 'ZTILELEN' keyword to document the number
     of table rows in each tile.

   - fixed error in ffbinit in calculating the total length of the binary
     table extension if the THEAP keyword was used to override the
     default starting location of the heap.

Version 3.34 - 20 March 2013

   - modified configure and configure.in to support cross-compiled cfitsio 
     as a static library for Windows on a Linux platform using MXE 
     (http://mxe.cc) - a build environment for mingw32. (contributed by 
     Niels Kristian Bech Jensen)

   - added conditional compilation statementsfor the mingw32 environment in 
     drvrfile.c because mingw32 does not include the ftello and fseeko functions. 
     (contributed by Niels Kristian Bech Jensen)

   - fixed a potential bug in ffcpcl (routine to copy a column from one table
     to another table) when dealing with the rare case of a '0X' column (zero
     length bit column).

   - fixed an issue in the routines that update or modify string-valued
     keyword values, as a result of the change to ffc2s in the previous 
     release.  These routines would exit with a 204 error status if the 
     current value of the keyword to be updated or modified is null.

   - fixed typo in the previous modification that was intended to ignore
     numerical overflows in Hcompress when decompressing an image.

   - moved the 'startcol' static variable out of the ffgcnn routine and
     instead added it as a member of the 'FITSfile' structure that is defined
     in fitsio.h.  This removes a possible race condition in ffgcnn in 
     multi-threaded environments.

Version 3.33 - 14 Feb 2013

   - modified the imcomp_decompress_tile routine to ignore any numerical 
     overflows that might occur when using Hcompress to decompress the
     image.  If Hcompress is used in its 'lossy' mode, the uncompressed
     image pixel values may slightly exceed the range of an integer*2 
     variable. This is generally of no consequence, so we can safely ignore
     any overflows in this case and just clip the values to the legal range.

   - the default tiling pattern when writing a tile-compressed image
     has been changed.  The old behavior was to compress the whole image
     as one single large tile.  This is often not optimal when dealing
     with large images, so the new default behavior is to treat each
     row of the image as one tile.  This is the same default behavior
     as in the standalone fpack program.  The default tile size can
     be overridden by calling fits_set_tile_dim.

   - fixed bug that resulted in a corrupted output FITS image when
     attempting to write a float or double array of values to a 
     tile-compressed integer data type image.  CFITSIO does not support
     implicit data type conversion in this case and now correctly
     returns an appropriate error status. 

   - modified ricecomp.c to define the nonzero_count lookup table as an 
     external variable, rather then dynamically allocating it within the
     3 routines that use it.  This simplifies the code and eliminates the
     need for special thread locking and unlocking statements. (Thanks to
     Lars Kr. Lundin for this suggestion). 

   - modifed how the uncompressed size of a gzipped file is computed in the
     mem_compress_open routine in drvrmem.c.  Since gzip only uses 4 bytes
     in the compressed file header to store the original file size, one may
     need to apply a modulo 2^32 byte correction in some cases.  The logic
     here was modified to allow for corner cases (e.g., very small files, and 
     when running on 32-bit platforms that do not support files larger than
     2^31 bytes in size). 

   - added new public routine to construct a 80 keyword record from the 3 input
     component strings, i.e, the keyword name string, the value string, and
     the comment string: fits_make_key/ffmkky.  (This was already an undocumented
     internal routine in previous versions of CFITSIO).

   - modified ffc2s so that if the input keyword value string is a null string,
     then it will return a VALUE_UNDEFINED (204) status value.  This makes it
     consistent with the behavior when attempting to read a null keyword 
     (which has no value) as a logical or as a number (which also returns
     the 204 error).  This should only affect cases where the header keyword
     does not have an equal sign followed by a space character in columns 9
     and 10 of the header record.

   - Changed the "char *" parameter declarations to "const char *" in many 
     of the routines (mainly the routines that modify or update keywords) to
     avoid compiler warnings or errors from C++ programs that tend to be more
     rigorous about using "const char *" when appropriate.

   - added support for caching uncompressed image tiles, so that the tile does
     not need to be uncompressed again if the application program wants 
     to read more data from the same tile. This required changes to the
     main FITS file structure that is defined in fitsio.h, as well as
     changes to imcompress.c.

   - enhanced the previous modification to drvrfile.c to handle additional user
     cases when running in the HEASARC's Hera environment.

********************************************************************************
                                    CCFITS
********************************************************************************

- Bug fix to getNamedLines: The 'where' variable should be reset to the
  top of the HDU prior to doing keyword search.

- Replaced the use of the valarray '==' operator with an explicit loop
  in ColumnVectorData<T>::compare.  This was to get around a compiler
  glitch that appeared on Mac 10.9.

********************************************************************************
                                     HEASP
********************************************************************************

Library for manipulating spectra and responses, including a Python
interface.  A detailed guide to the library and its use when writing
programs or using Python is available in
$HEADAS/../heacore/help/headas_guide.pdf.

New in this release:

- Fixed error if the spectrum is a single channel. Was writing the RATE
   or COUNTS value into a keyword instead of the column.

- Fixed so that a CHANNEL column is always written out even for a single
   channel file. Also ensured that RATE, COUNTS, STAT_ERR are written as
   columns in type II files for the case of a single channel where
   all rows have the same value.  Fix for writing E_MIN and E_MAX
   correctly as columns when there is only one channel.

- Added a version of SPcopyKeys which copies from a different named HDU.
   Also added some handy utility routines to read strings from a text
   file and convert a string to an integer or real.

- Added shiftEnergies method to shift the response in energy space
   (analogous to shiftChannels). Added versions of the shiftChannels
   and shiftEnergies methods which take multiple shift specifications
   at the same time. Added option to shift channels by energy instead of
   channel number using the channel energy bound information.

- Added a substituteRow method to replace the contents of a row. This
   should be used sparingly since it is inefficient.

********************************************************************************
                   APE / XPI (Parameter Interface Libraries)
********************************************************************************

- pquery2: Fixed to enable the correct/traditional pquery2 behavior.

********************************************************************************
                                   ATTITUDE
********************************************************************************

- prefilter: Fixed bug that appeared when using new gfortran v4.8.1, in
  which erroneous output values in the 'COR_SAX' and 'MCILWAIN_L'
  geomagnetic data columns were generated.

********************************************************************************
                                     FV
********************************************************************************

- Bug fix: Text dump of vector column was changing NULLs to non-zero
  values.

- Updated third-party packages in HEASoft:

    Tcl/Tk 8.5.13
    Itcl 3.4.1
    Tix  8.4.3
    WCSLIB 4.1.6

- fitsTcl and POW libraries:

  Applied changes required for use with Tcl 8.5.13, and addressed
  some compiler warnings.

********************************************************************************
                                    FUTILS
********************************************************************************

- fdump: Add support for 8-byte integer datatype.

- fimgstat: Modified to support 3-D and 4-D images if the higher
  dimensions have length = 1.

- fkeyprint: Increase max # of input files to 4096.

- fmerge: Allow for longer filenames, and where necessary increase the
  length of the 'context' string sent to other routines (e.g. fcerr) to
  handle the longer filenames.

- fverify: Fixed bug in computing the location of the data heap in
  binary tables if the THEAP keyword is used to override the default
  starting byte of the heap.

********************************************************************************
                                   HEATOOLS
********************************************************************************

- ftdiff: Use TBIT for X type, not TBYTE.

- ftimgcalc: Update WCSLIB version to 4.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

- ftmerge: Allow a single input file via the command line.

- ftstat:

  Add support for fixed-length vector columns; display messages
  notifying user that zero-length vector columns or columns of type TBIT
  (or TLOGICAL or TSTRING) will not be computed.  Update ftstat and
  fstatistic help files to clarify how they differ in handling vector columns.

  Allow 3-D and 4-D images, as long as the 3rd and 4th axes have a length = 1.

- ftverify:

  Fixed bug in computing the location of the data heap in binary tables if
  the THEAP keyword is used to override the default starting byte of the heap.

  Update WCSLIB version to 4.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/


********************************************************************************
                                    HEAGEN
********************************************************************************

- barycorr:

   * Add NuSTAR CALDB query capability;
   * Case of barytime=YES with more than two extensions now works
   * More descriptive error messages, and less repetitive
   * Fix bug in handling of RXTE extractor and TIMEZERO keyword

- flx2tab: Modified so that the input text file can use tab separated
  columns.

- flx2xsp: Fixed so that the input file columns can be separated by tabs
  as well as spaces.

- rgsrmfsmooth: Update WCSLIB version to 4.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

********************************************************************************
                                   HEASARC
********************************************************************************

- xy2sky, sky2xy:

  Allow for RADESYS keyword (FITS v3.0 convention) instead of RADECSYS,
  and make their presence (and that of EQUINOX) optional rather than
  generating an error, writing radecsys='' and equinox='0' into the par
  file if they are not found.

********************************************************************************
                                    XIMAGE
********************************************************************************

- Fixed a bug encountered in reading an event file in which events with
  null coordinates are retained with incorrect coordinate values.  These
  events are now rejected as they are encountered during the reading.

- Update to version 7.1.1 of the Starlink AST library.
  http://starlink.jach.hawaii.edu/starlink/AST

- Changed NSEQ from 4 to 15 inside AST library's RoundFString function
  to avoid bug that rounds numbers near -9.999 to -100 instead of to -10.

- Update Tcl/Tk to 8.5.13.  Known issue on some platforms:

  After using the /XTK plot device, the following message may be
  displayed upon exit:

    [XIMAGE> quit
    X Error of failed request:  RenderBadPicture (invalid Picture parameter)
      Major opcode of failed request:  ### (RENDER)
      Minor opcode of failed request:  # (RenderFreePicture)
      Picture id in failed request: #########
      Serial number of failed request:  ####
      Current serial number in output stream:  ####

********************************************************************************
                                    XSELECT
********************************************************************************

- Fixed incorrect behavior seen when executing "save all", i.e. prompt
  about clobbering the output file before prompting for the output
  filename.

- Added entries for NUSTAR to xselect.mdb

********************************************************************************
                                     XSPEC
********************************************************************************

Version 12.8.1:

New features:

- New models:
     cpflux  - a variant of cflux for photon flux.
     heilin  - Voigt absorption profiles for the HeI series
     lyman   - Voigt absorption profiles for the HI or HeII series
     zbabs   - EUV ISM attenuation

- A new statistic, pgstat, has been added for the case of Poisson-distributed
  data
  with a Gaussian-distributed background. The whittle statistic can
  now be used when fitting averaged power density functions by
  appending an integer (so eg whittle5 is the statistic to use when
  fitting a pdf constructed by averaging those from 5 observations).

- The old CERN Minuit library, which is used for the migrad, minim, monte,
  and simplex fitting methods and the improve command, has been
  replaced by the new version. The minim and monte methods are no
  longer supported and the new version does not include an improve command.
  The output from the migrad and simplex fitting methods now looks the
  same as that from the leven method. Note however that the rules for
  when to write intermediate fit results are not directly comparable
  so do not provide a measure of the relative speed of the methods.

- Fakeit now has a 'nowrite' option to generate fake spectra without
  producing output files.  This is also now available in the
  multifake.tcl script command.

- Parallel processing capability has been added to the steppar command
  and can be invoked using the parallel command.

- Markov Chain Monte Carlo (the chain command) now uses the
  Goodman-Weare algorithm by default. Previously the default was
  Metropolis-Hastings.

- After a chain run, the best-fit parameters and statistic are now
  displayed with "chain info", and are available through the "tclout
  chain" option.

- The default atom_db version used in apec models may now be modified
  with the ATOMDB_VERSION keyword in the user's Xspec.init file.

- Steppar now has a 'delta' option for performing grids centered on
  the best-fit parameters.

- The 'setplot delete' option has been enhanced to allow removal of all
  or a range of commands.

- For external programs calling XSPEC, new wrapper functions have been
  added for retrieving XFLT keywords from data files.

- Norm parameters are now set with a default 'soft' upper limit below
  their 'hard' upper limit.

- In PyXspec, the Fit.statMethod and statTest attributes can now be set
  for individual spectra.

Enhancements previously released as patches to 12.8.0:

- AtomDB has been upgraded to version 2.0.2.

- The tclout 'stat' and 'statmethod' options can now retrieve the test
  statistic as well as the fit statistic.

- The simftest Tcl script command now takes an optional filename
  argument for output.

- Attributes added to PyXspec classes: Xset.parallel, Fit.statTest.

All bug fixes to v12.8.0 released as patches are included in v12.8.1.
In addition the following problems have been corrected:

- The command history file xspec.hty (in the user's ~/.xspec directory)
  is now updated when exiting XSPEC with the 'quit' command.  Previously
  it was only updated when exiting with 'exit'.

- The 'chain' command can now read/write files in ASCII format when
  running in the default Goodman-Weare mode.  Previously this feature
  was only available for Metropolis-Hastings chains.

- Fix to an array access error in the nthcomp model.

- PyXspec fix removes error messages generated when accessing response
  parameters in Python versions 2.6.x.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn15 - updates since v221bn13 (HEASOFT 6.13) include:

- Fixed error which caused spurious features in absorption line profiles:
  in routine stpcut:  dpcrit=1.e-2 --> dpcrit=1.e-6

- Allows density to exceed 1.e+18.  This represents some serious
  approximations, physically:  there are various quantities which are
  tabulated vs. density, and those grids (still) end at 10\^18.  For
  example, the recombination into high n levels for each ion is lumped
  into one rate, for levels beyond those which are treated
  spectroscopically.  Computationally, the recombination rate into
  these levels can be written n\_e * alpha\_highn(n\_e, T).  So the
  n\_e which is the argument of the alpha\_highn function still can't
  go beyond 10\^18.  But the n\_e multiplier can be arbitrarily large.
  Similar comments apply to some other types of rates.

- Includes new data on N VI level structure and collisional excitation.

********************************************************************************
                                    EXOSAT
********************************************************************************

- tkexomerge: Invoke "wish" at startup rather than "wish8.0".

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS version 1.2.0 - new software for the NuSTAR mission:

* nuattcorr - Correct NuSTAR attitude file

* nubackscale - Apply backscale correction to NuSTAR energy spectra

* nucalcpha - Correct energy, calculate PHA and assign event grades for
  NuSTAR event files.

* nucalcpi - Calculate PI column values of NuSTAR event files.

* nucalcpos - Convert Raw coordinates into Detector coordinates of NuSTAR
  event files.

* nucalcsaa - Calculate SAA passages for NuSTAR

* nucoord - Convert Raw coordinates into Detector and Sky coordinates of
  NuSTAR event files

* nuexpomap - Generate exposure maps for NuSTAR event

* nufilter - Create a NuSTAR filter file from HK data running 'prefilter'
  and 'makefilter'

* nuflagbad - Flag events for bad pixels in NuSTAR event files

* nuflagevt - Flag events according to various cuts criteria in NuSTAR
  event files

* nuhotpix - Search for hot and flickering pixels in NuSTAR event files

* nulccorr - Apply livetime correction to NuSTAR light-curves

* nulivetime - Apply the dead time correction to the temporal keywords of
  the NuSTAR event files.

* numetrology - Process the metrology data for NuSTAR

* numkarf - Generates an ARF file for an input PHA file for NuSTAR

* numkrmf - Generates an RMF file for an input spatial region file
  for NuSTAR

* nupipeline - Run in sequence the tasks for NuSTAR data processing

* nuproducts - Extract high-level data products from a Level 2 event file
  for NuSTAR

* nuscreen - Generate GTIs and use them together with event properties
  selection to screen NuSTAR event files

* nuskypos - Calculates SKY position of the optical axis, of the aperture
  stop center and of the DET1 reference pixel for NuSTAR

* nuskytodet - Calculates DET1 and DET2 coordinates of a SKY pixel for
  NuSTAR

* nuversion - Report version string for NuSTAR package

********************************************************************************
                                    SUZAKU
********************************************************************************

SUZAKU:

- aepipeline, aeattcor2, hxdxb, hxdwampipeline: Fixed deprecated qw( )
  syntax in foreach loops.

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- batcelldetect, batoccultmap: Updated WCSLIB version to 4.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

- batsurvey:

  By default, prevent operation on data with 20 energy bins instead
  of normal 80 energy bins.

  new parameters 'dph_pattern' 'attitude_pattern' 'sao_pattern'
  'go_pattern' 'de_pattern' are filename wildcard patterns that
  give the user control over which files are used for processing.

UVOT:

- uvotapplywcs: Updated WCSLIB version to 4.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

- uvotdetect: Added a mode that improves source detection in images
  with few counts: when expopt=EVENTS is specified, an image with
  discretized counts is passed to SExtractor.

- uvotsource, uvotmaghist, uvotproduct, uvotevtlc:

  Updated the derivation of the rate limit to account for uncertainty in
  the background.

  Include the aperture, large scale sensitivity, and detector sensitivity
  corrections in the upper limit calculations (previously, only coincidence
  loss was included).  Added the CORR_RATE_LIMIT column and derive the
  MAG_LIM, MAG_HZ_LIM, FLUX_AA_LIM, FLUX_HZ_LIM columns from CORR_RATE_LIMIT
  instead of COI_RATE_LIMIT.

  Include the Swift clock correction when converting UTC to MET.

- uvotcentroid, uvotgrplot, uvotsequence:

  PGPLOT-perl module updated to v2.21, ExtUtils-F77 updated to v1.17.
  Distributed by Karl Glazebrook via http://search.cpan.org/~kgb/.
  Modified K. Glazebrook's build to allow universal architecture formats
  of PGPLOT.bundle on Mac OS X.

XRT:

- xrtcalcpi: Bug fixed handling 'seed' input parameter.

- xrtpccorr: Bug fixed.

- xrtpipeline: Use of the "pat" attitude file by default. Handle SLEW
  and SETTLING mode while correcting bias for Photon Counting mode.

********************************************************************************
                                     XTE
********************************************************************************

- pcarsp:

  - comma-separated list of PCU weights now works properly

  - exit task if no detector/layers are requested

- pcaextspect2:

  - remove unused and undocumented 'src_pha_file_nodt' and
    'bkg_phafile_nodt' parameters, in favor of new 'deadcorrtype'
    parameter to control how dead-time is calculated

  - 'filtfile' parameter now accepts @filtfiles.lis form of input;
    'filtfile' is only prompted if 'respfile' is not NONE

  - handle case when final EXPOSURE is zero, new 'phazeroexp'
    keyword controls what happens in this situation

  - better parsing of 'pculist' and 'layerlist', including ranges

- pcadeadspect2:

  - new parameter 'deadcorrtype' allows to correct for LIVE- or ON-time

  - output keyword is now DEADAPP instead of DEADCORR for compatibility

  - new parameters 'gtiarray' 'lcbinarray' 'maxmiss' 'mfracexp' to handle
    all possible time binnings

- pcaextlc2 (NEW TASK): extracts Standard2 light curve with corrections

- pcaprepobsid (NEW TASK): prepares an entire RXTE observation for
  PCA analysis

- pcamergeobsids (NEW TASK): merges individual observations into a
  single data set

- pcaprepfile2: small cleanups

- saextrct: version 4.3a: Lift formal limit on number of input files to
  999 files instead of 100.

********************************************************************************
                       GLOBAL CHANGES / CONFIGURATION
********************************************************************************

- Issue a warning on Darwin if Perl is not co-located with C since
  XCode C is not likely to play nice with non-XCode Perl.

- hwrap: New utility to create a wrapper environment for HEASOFT tasks
  to prevent clashes with other software packages (e.g.  XMM-SAS, CIAO).
  See http://heasarc.gsfc.nasa.gov/lheasoft/hwrap.html for more
  information.

- All Perl scripts: Replace "require getopt|s.pl" with "use Getopt::Std",
  as getopt.pl and getopts.pl are no longer distributed with the latest
  Perl (~v5.15.x - 5.16.x).  Replace "&Getopt|s()" calls with getopt|s().

- Older Fortran-based ftools: change all udmget arrays MEMB/S/I/L/R/D/X
  of size (1) to size (100) to get past new aggressive optimization in
  gfortran 4.8.x.  The new compiler decides that e.g. MEMI(1) can never
  have more than one element so when doing loop unrolling optimization
  appears to (incorrectly) remove the loop over its elements.

- Add checks for -fno-automatic (gfortran) or -fstatic (g95) compiler
  flags to protect un-SAVEd variables in Fortran.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.15
                                November 25, 2013
********************************************************************************

The HEASoft 6.15 release is primarily driven by updates to the NuSTAR
software, but also includes updates to other packages which have been
revised to mirror the current development versions in use at the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CCFITS
********************************************************************************

- Added read/write capability for images of LONGLONG type.

- Added a missing 'break' statement to 'case Tlonglong' in 
  the FITSType2String function.

********************************************************************************
                                     HEASP
********************************************************************************

Library for manipulating spectra and responses, including a Python
interface.  A detailed guide to the library and its use when writing
programs or using Python is available in
$HEADAS/../heacore/help/headas_guide.pdf.

- (rmf.cxx) Do a reverseRows if necessary in convertUnits. Removed the
  switch of ChannelLowEnergy and ChannelHighEnergy since this should
  not be necessary as long as the input is correct.

- Added trap for wrong keyword value type in the keyword methods.

- Added a routine to write the CREATOR keyword in a file.

- (ARF) Added methods to rebin and multiply by a constant.

- (RMF) Added methods to multiply by a constant.

- (PHA) Added method to select a subset of channels. Also, added a
  workaround for CCfits currently not automatically converting when
  reading a real as a string.

- Make sure that any carriage-return or new-line is removed when reading
  from a text file.

- Fixed bug in rebinning ARFs.

- Python module: Added rebin and multiply by a constant for arf.

********************************************************************************
                                     FV
********************************************************************************

- Fix logic that generated large temporary data file when displaying
  vector columns with ds9 (Table.tcl).

- Correct the check for number of parameters to translatedKeywords
  to 7 (fitsTcl library).

********************************************************************************
                                    FUTILS
********************************************************************************

- fverify: Changes to ignore blank keywords immediately preceding
  the END keyword, and added support for large files where the size
  of the heap, as given by the PCOUNT keyword, is greater than the
  2.1 GB 32-bit integer limit.

********************************************************************************
                                   HEATOOLS
********************************************************************************

- ftverify: Changes to ignore blank keywords immediately preceding
  the END keyword, and added support for large files where the size
  of the heap, as given by the PCOUNT keyword, is greater than the
  2.1 GB 32-bit integer limit.

********************************************************************************
                                    HEAGEN
********************************************************************************

HEAGEN:

- flx2tab: Added support for energies in reverse order in input file.
  Added regression test case for energies in reverse order.  Improved
  checking of the input files.

- flx2xsp: Now works with input energies in decreasing order and tests
  for scrambled order.  Added new regression tests.  Improved checking
  of the input file to catch problems such as blank lines.  The input
  file can now contain discontinuous energy bins.

- sprbnarf: Replaced C code with C++ for simplicity.

- refdata/swco.dat: new version (v096)

- SimpleFITS.pm:

  writecol() now accepts "nulval" parameter; writecol() now accepts
  "grow" parameter to grow table to match data size.

  parsekeys() now returns hash ref instead of array.  insertcol() has
  been modified to use this new return value.

********************************************************************************
                                    HEASARC
********************************************************************************

- nh: Mystery seg fault on Fedora 19 (ftghpr returns naxis=0) resolved
  by turning down compiler optimization.

********************************************************************************
                                    XSELECT
********************************************************************************

XSELECT:

- Fix for bug when running saextrct with no phasefile set.

- Fix for seg faults when running "save" commands.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.15 includes Xspec 12.8.1g (patches a-g):

 http://heasarc.gsfc.nasa.gov/xanadu/xspec/issues/issues.html

12.8.1a:

  The optxagnf additive model component causes a crash when loaded.

12.8.1b:

  When loading a model explicity of the form:

    M1((M2(A1+A2)+A3)M3+A4)

  (that is, doubly-nested component groups AND with a multiplicative
  component (M3) on the right of the outer group), the model components
  will be displayed out of order.

12.8.1c:

  This adds a new feature to PyXspec: a new attribute to the Fit object
  for retrieving the test statistic value, Fit.testStatistic.

12.8.1d:

  When a new best fit is found during a steppar run and the user agrees
  to run fit again, a bug may cause the new fit to start from a bad
  position in parameter space.

12.8.1e:

  Bug fix to the eqpair model for the case of a negative kT_bb parameter.

12.8.1f:

  For PyXspec running on OS X Mavericks, this fixes a bug which
  occurs when assigning or retrieving a correction file to/from a
  Spectrum object.

12.8.1g:

  This adds Mac-specific compiler macros to ease the building of PyXspec
  with Xcode 5.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn16 - updates since v221bn15 (HEASOFT 6.14) include:

- Change to routine readtbl to expand the temporary array used for
  reading integers.  This caused erroneous input in version 221bn15.
  This affected only 64-bit PC Linux installations.  The fix was
  applied to HEASoft 6.14 source code downloads on 24 August 2013
  and is included here.

- Fix to bug which affected printing of atomic data for lines coming
  from Fe UTA. Bug did not affect calculated quantities.

- Change to xstar.f to allow printing of line data when lpri=2.

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS version 1.3.0:

Major changes introduced in this version:

- numetrology: Addition of the new input parameter psdcal, with
  default value yes, to optionally (if set to no) disable the
  linearization of the PSD X/Y coordinates.

- nuscreen: for SCIENCE observing mode 1) introduction of a new run
  of the FTOOL maketime to calculate the ONTIME value during which
  the PSD coordinates are outside the CALDB metgridfile calibrated
  grid and 2) addition of a new keyword named NUPSDOUT to the output
  event file storing the ONTIME calculated value. See the NuSTARDAS
  users guide sections 4.5 and 6.3.

- numkarf: 0) for extended sources (parameter extended=yes) the
  input parameters grflag and psfflag are automatically set to no;
  1) introduction of an energy dependent PSF correction; 2) fixed
  bug for small values of the input parameter boxsize (extended
  source case); 3) changed the call to the nuexpomap module.

- nuexpomap: introduction of a new algorithm for inclusion of
  bad/hot pixels in exposure maps.

- nulccorr: 1) correction for PSF losses using a CALDB PSF file
  corresponding to the value of the energy input parameter;
  2) changed the call to the nuexpomap module.

- nubackscale: changed the call to the nuexpomap module;

- nupipeline: 1) addition of the new input parameter psdcal;
  2) modified the call to the module numetrology; 3) addition of
  the ONTIME value during which the PSD coordinates are outside
  the CALDB metgridfile in the STDOUT final report; modified call
  to modules nuexpomap and nuproducts to accomodate above changes.

- nuproducts: modified the call to the modules nulccorr, numkarf
  and nubackscale.

Summary of changes:

numetrology:

Allows the pipeline to be run with the calibration of the PSDs off.
This prevents data from time periods when the PSDs are out-of-range
from being lost in the cleaned event data (for some observations
this may be result in as much as a 10-20% increase in exposure).
The effect on the event reconstruction varies source-by-source, but
the reconstruction will in general, be worse with the calibration
turned off. Turning off the PSD calibration may also affect the
absolute position reconstruction.

nuscreen:

In the default setting the pipeline now appends a keyword to the
cleaned event files, "NUPSDOUT", that contains the number of seconds
lost to the PSD out-of-range filter. If this is a large fraction of
the total observation, then the user may want to turn off the PDS
calibration and re-run the pipeline. See the NuSTARDAS users guide
section 6.3.

numkarf:

(0) Fixed a bug where the ghost-ray and PSF corrections defaulted to
"ON" even for extended sources. These flags correctly default to "OFF"
when extended=YES.

(1) Includes the effect of the energy-dependent PSF when psfflag=YES.
This effect is on the ~5% and primarily acts below 10 keV for sources
extracted using small (<<30 arcsecond radius) extraction regions.

(2) Bug fix.

(3) Keyword maintenance.

nuexpomap:

Improved the algorithm for recomputing exposure maps. Pixels that
are disabled (either in software on by the user via the userbadpix
file) are now properly vetoed in the exposure map.

nulccorr:

Applies energy-dependent PSF corrections as per numkarf.

********************************************************************************
                                    SUZAKU
********************************************************************************

SUZAKU:

- Bug fix: fault of an variable initialization and unintended variable
  substitutions inside if()s.

- Minor changes to fix compilation errors under XCode 5 on Mac OS X.

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- batsurvey: Bug fix to report accurate exit status.

********************************************************************************
                                     XTE
********************************************************************************

- pcadeadcalc2: Make sure the input file is a Standard2 file.
  Fix bug in computation of NUM_PCU_ON (previously was computing
  NUM_PCU_OFF, now fixed).

- pcaextlc2: Back off on some overzealous error checking: was
  rejecting X1L style of layer listing, now fixed; die if the user
  enters an invalid layer specification rather than continuing
  silently.

- pcaextspect2: Back off on some overzealous error checking: was
  rejecting X1L style of layer listing, now fixed ; die if the user
  enters an invalid layer specification rather than continuing
  silently ; do not check filter filter file existence if no
  response file is requested ; handle X1L - > L1 and X1R - > R1
  transformation when calling 'pcarsp'.

********************************************************************************
                     Configuration / Third-party Packages
********************************************************************************

- Minor updates to code and configuration were made to the v6.14
  source code downloads to ensure support of the XCode 5 compiler
  suite on Mac OS X, and are included here.

- CFITSIO Perl Module (Astro-FITS-CFITSIO): updated to v1.10, with
  additional patch applied to add fits_write_colnull() [ffpcn].

- readline: Applied official patches readline62-001/004 and extended
  configure switches to Darwin 13.x.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.15.1
                                January 28, 2014
********************************************************************************

The HEASoft 6.15.1 release is driven by updates to the NuSTAR and Swift/XRT
data analysis software.

********************************************************************************
                                    HEAGEN
********************************************************************************

- barycorr: Updated keywords were {RA,DEC}_NOM, now changed to
  {RA,DEC}_OBJ to avoid interference with operation of Swift and
  NuSTAR software; no known impact to RXTE or Chandra; add new
  keywords TREFPOS & TREFDIR which adhere to new Rots et al. draft
  standard for timing keywords.

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS version 1.3.1:

Major changes introduced in this version:

- nuexpomap: addition of the keyword 'PIXBIN' and 'PERCENT' to the
  header of the output sky exposure maps.

- nulccorr: update of the value of the 'DEADAPP' keyword to 'True' in
  the output light-curve

- nupipeline: 1) addition of the new input parameters 'barycorr',
  'clockfile', 'srcra_barycorr' and 'srcdec_barycorr'; 2) modified the
  call to the module 'nuproducts' to enable the barycenter correction

- nuproducts: 1) addition of the new input parameter 'barycorr' to optionally
  apply the barycenter correction to output files with internal runs of the
  multi-mission FTOOL 'barycorr'; 2) addition of the energy filtering of the
  output sky images through the input parameters 'pilow' and 'pihigh'.

Summary of changes:

* nupipeline/nuproducts:

  Allows the pipeline to produce barycenter corrected event files and
  lightcurves via a new keyword passed to the "nuproducts" script. The
  user may set the RA/DEC of the object using the 'srcra_barycorr' and
  'srcdec_barycorr' keywords to nupipeline and/or nuproducts.

  Output sky images are now filtered using the "pilow" and "pihigh"
  keywords. Previously only the lightcurve was filtered and the images
  produced by nupipeline/nuproducts were always "full band" images and
  the user was required to use to XSELECT or "extractor" to produced
  energy-band images.  This has been changed for simplicity.

* nulccorr:

  Some lightcurve analysis suites (e.g. lcurve) read the "DEADAPP"
  keyword to determine whether or not the deadtime correction has been
  applied. Previously, the "DEADAPP" keyword had not been set, which
  could result in livetime corrections being applied twice (once in
  the bin-by-bin by nulccorr and then the average livetime correction
  across the lightcurve by lcurve or other XRONOS FTOOLs).  DEADAPP is
  now correctly set if nulccorr has been called on a lightcurve and
  livetime corrections have been applied.

* nuexpomap:

  The "PIXBIN and "PERCENT" option keywords have been added to the
  header of the exposure maps to improve self-documentation.

********************************************************************************
                                     SWIFT
********************************************************************************

XRTDAS_v292:

Major Changes to tasks:

* xrttam      - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrtfilter   - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrttdrss2   - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrtpccorr   - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrthkproc   - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrtlccorr   - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrtexpomap  - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrttimetag  - Added check of the 'ATTFLAG' keyword of the input attitude file.
* xrtpipeline - Added check of the 'ATTFLAG' keyword of the input attitude file.
              - Use of the "pat" attitude file by default for data in SETTLING
                mode.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.16
                                   July 2, 2014
********************************************************************************

The HEASoft 6.16 release is primarily driven by updates to the NuSTAR
and Swift/XRT software, but also includes updates to other packages which
have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                   CFITSIO
********************************************************************************

- Version 3.37:

  - Added configure options to support reading bzip2 compressed
    FITS files.  This depends on having the bzlib library installed
    on the local machine.  Patch submitted by Dustin Lang.

  - Replaced the random Gaussian and Poissonian distribution
    functions with new code written by Craig Markwardt derived
    from public domain C++ functions written by John D Cook.

  - Patched fitsio2.h to support CFITSIO on AArch64 (64-bit ARM)
    architecture (both big and little endian).  Supplied by Marcin
    Juszkiewicz and Sergio Pascual Ramirez, with further update by
    Michel Normand.

  - Fixed bug in fpackutil.c that caused fpack to exit prematurely
    if the FZALGOR directive keyword was present in the HDU header.

- Version 3.36:

   - Small change to the fileseek function in drvrfile.c to support
     large files > 2 GB when building CFITSIO with MinGW on Windows.

   - reorganized the CFITSIO code directory structure; added a 'docs'
     subdirectory for all the documentation, and a 'zlib' directory
     for the zlib/gzip file compression code.

   - made major changes to the compression code for FITS binary table
     to support all types of columns, including variable-length arrays.
     This code is mainly used via the fpack and funpack programs.

   - increased the number of FITS files that can be opened as one
     time to 1000, as defined by NMAXFILES in fitsio2.h.

   - made small configuration changes to configure.in, configure,
     fitsio.h, and drvrfile.c to support large files (64-bit file
     offsets} when using the mingw-w64 compiler (provided by
     Benjamin Gilbert).

   - made small change to fits_delete_file to more completely ignore
     any non-zero input status value.

   - fixed a logic error in a 'if' test when parsing a keyword name
     in the ngp_keyword_is_write function in grparser.c

   - when specifying the image compression parameters as part of the
     compressed image file name (using the "[compress]" qualifier
     after the name of the file), the quantization level value, if
     specified, was not being recognized by the CFITSIO compression
     routines. The image would always be compressed with the default
     quantization level of 4.0, regardless of what was specified.  This
     affected the imcopy program, and potentially other user-generated
     application programs that used this method to specify the
     compression parameters.  This bug did not affect fpack or
     funpack.   This was fixed in the imcomp_get_compressed_image_par
     routine in the imcompress.c file.

   - defined a new CFITS_API macro in fitsio.h which is used to export the
     public symbols when building CFITSIO on Windows systems with CMake. This
     works in conjunction with the new Windows CMake build procedure that
     is described in the README.win32 file. This complete revamping of the
     way CFITSIO is built under Windows now supports building 64-bit
     versions of the library.  Thanks to Daniel Kaneider (Luminance HDR
     Team) for providing these new  CMake build procedures.

   - modified the way that the low-level file_create routine works when
     running in the Hera environment to ensure that the FITS file that is
     created is within the allow user data disk area.

   - modified fits_get_compression_type so that it does not return an error
     if the HDU is a normal FITS IMAGE extension, and is not a tile-compressed
     image.

   - modified the low-level ffgcl* and ffpcl* routines to ensure that they
     never try ro read or write more than 2**31 bytes from disk at one time,
     as might happen with very large images, to avoid integer overflow errors.

   - modified Makefile.in so that doing 'make distclean' does not delete
     new config.sub and config.guess files that were recently added.

   - adopted a patch from Debian in zcompress.c to "define" the values of
     GZBUFSIZE and BUFFINCR, instead of exporting the symbols as 'int's.

********************************************************************************
                                    CCFITS
********************************************************************************

- Added proper handling of 'D' exponent notation when reading in
  keyword values of type float or complex.  This is allowed by
  the FITS standard, but the C++ stringstream conversion operator
  was not recognizing it.  This caused value to be truncated at
  the 'D' for floats, and to be ignored altogether for complex.
  The change was made entirely in the parseRecord() function.

- CCFITS: In Column::setLimits, removed the dynamic allocation of
  the static variable arrays.  These led to small memory leaks as
  they are never freed.

- Removed vestigal code file NewColumn.h.

********************************************************************************
                                     HEASP
********************************************************************************

- Fixed error when converting flux units.

- Fixed problems when creating an RMF with zero channel groups
  for at least one energy and one channel group for all the rest.

- Added an overloaded version of rmf::RandomChannel which takes
  arrays of energies and number of photons (for each energy).
  Added a C wrapper called RandomChannelMultiEnergies to Cheasp.h
  and Cwrappers.cxx. Fixed missing random number initialization in
  RandomChannels.

- Added code to all heasp destructors to clear vectors to avoid
  memory leaks.

- Added a routine, SPmatchString, to SPutils.cxx to do partial
  string matches to a vector of strings.

- Just for completeness added an rmf::uncompress method.

- Python module: New source code generated using swig 3.0.0 which
  gets past compile errors on Mac OS X 10.9 (Mavericks).

- Fixed an error in ARFobjectToStruct which wrote the high energies
  into the effective area array.

- Added ReadRMF and WriteRMF wrappers to grab or write the matrix
  and ebounds data at the same time.

- Fixed bug which causes a seg fault when reading a pha file with no
  statistical errors.

********************************************************************************
                                   CALTOOLS
********************************************************************************

- genrsp: Ensured that E_MIN is always <= E_MAX in the
  EBOUNDS extension. This was not the case when creating
  grating spectra and could be interpreted as violating the
  response matrix standard.

********************************************************************************
                                    FIMAGE
********************************************************************************

- fimgmerge: Fixed strcpy of overlapping strings which aborts on
  Macs.  Raised arbitrary maximum number of input files to 999.

********************************************************************************
                                    FUTILS
********************************************************************************

- ftverify: Squashed erroneous warning messages similar to
  "CRPIX3A: index 3 is not in range 1-2 (NAXIS)".

********************************************************************************
                                    HEAGEN
********************************************************************************

- flx2tab: The redshift parameter was being ignored. Fixed bug
  when reading parameter info file.

********************************************************************************
                                    HEASARC
********************************************************************************

- addspec: Improved diagnostic messages.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftdiff: Do not perform numerical comparisons of TFORM or
  TDISP keyword values.  Allow for longer file paths/names.

- ftverify: Squashed erroneous warning messages similar to
  "CRPIX3A: index 3 is not in range 1-2 (NAXIS)".

********************************************************************************
                                    XIMAGE
********************************************************************************

- Fixed bug in the AST library which caused a crash when loading
  an image file without world coordinates.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.16 includes Xspec v12.8.2:

 http://heasarc.gsfc.nasa.gov/xanadu/xspec/issues/issues.html

New features:

- The code underlying the NEI models has been rewritten to accommodate
  the new AtomDB 3.0 files, the beta version of which are included as
  the default when using any of the NEI models. Older versions can be
  recovered using xset NEIVERS. The CEI models (apec etc) use some of
  the same code but there should be no change in their behaviour
  except for a slight speed-up.

- New models:
     agauss  - Gaussian model with units in Angstrom and a gaussian
                 shape in wavelength space.
     nsx     - Neutron star non-magnetic atmosphere model from Wynn Ho
                 and collaborators.
     nsmaxg  - Neutron star magnetic atmosphere model.
     rnei    - NEI recombination model assuming an initial temperature
     vrnei   - rnei with variable abundances for the common elements
     vvrnei  - rnei with variable abundances for all elements (Z<=30).
     zagauss - The agauss model with a redshift parameter.
                                  
- The goodness command has added options fit|nofit. The fit option
  runs a fit on each simulation before calculating the test statistic.

- The cstat fit statistic can be modified by appending an integer eg
  statistic cstat5. In this case the statistic will be evaluated as if
  the group min N had been used in grppha. This is not as efficient
  because the rebinning has to be done every statistic evaluation
  however it is usual for testing using simulations.

- The 'model' command now checks that parameters are all within a
  reasonable order of magnitude (~1e10) of each other, and issues a
  warning if they are not.

- Improved the handling of new-best-fit cases when running the 'error'
  command on parallel processes.  The global new-best-fit is now
  automatically retained.  Previously the user was prompted to re-run
  'error' in a single process.

- Models can now store (keyword,value) pairs using loadDbValue (C++)
  or PDBVAL (Fortran). These values can be recovered using the
  tclout(r) modkeyval option. This provides a way to get internal 
  information from the last invocation of a model.

- There is a manual XSFunctions_guide.pdf in Xspec/src/help describing
  some of the C++ classes used in the XSFunctions library. This is
  intended to make it easier to use these classes in other models.

Enhancements previously released as patches to 12.8.1:

- PyXspec: added Fit.testStatistic attribute for retrieving the test 
    statistic value from the most recent fit.
    
- PyXspec: added compiler macros for switching to <Python/Python.h>
     include paths when building on Mac platforms.
   
All bug fixes to v12.8.1 released as patches are included in v12.8.2.
In addition the following problems have been corrected:

- Fix for a particular case of non-associative expression evaluation.
  Models of the form C((M1*A)M2) or C(M1*A)M2, where C is a convolution 
  component, were being wrongly evaluated as (C(M1*A))*M2.
  
- For users with external programs linking to the XSPEC model library,
  the FNINIT function now properly initializes the AtomDB version to
  v2.0.2.
  
- Fix for an 'ignore' command syntax evaluation that was causing a crash
  on OS X Mavericks.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn21 - updates since v221bn16 (HEASOFT 6.15) include:

- v2.2.1bn21 (May 2014):

  Fix to an error in implementation of Bryans collisional ionization
  rates.  Fix to an error in inclusion of turbulence in implementation
  of iron M-shell UTA line absorption.

- v2.2.1bn20 (Mar. 2014):

  Fix to a bug which caused the wrong damping value to be used in some
  cases.  This occured for valence shell lines, for which the damping
  should be just due to the natural radiative lifetime, but for which
  inner shell Auger damped lines also exist for the same ions.  In this
  case, the widths for the latter lines were incorrectly used instead
  of the former.

- v2.2.1bn19 (Mar. 2014):

  Fix to bug which led to incorrect f value use for iron UTA lines.
  Fix errors to routine binemis and linopac associated with
  attempt to make routines faster:  now, always use constant
  stepsize for internal calculation of line profile.
  Change to true anders and grevesse abundances

- v2.2.1bn18 (Jan. 2014):

  New atomic data for K shell absorption by neutral and once-
  and twice-ionized stages of Ne and Mg from Gorczyca.

  Fix errors in the routine binemis which puts out binned
  emission lines.  These errors led to spurious features in
  models with very high spectral resolution.

  Change to the value of the constant hc used in conversion
  from ev to A and back, to reflect more accurate values for
  constants.  Old value was 12398.54, new value is 12398.41.
  Also change to Rydberg constant; old value was 13.598,
  new value is 13.605.  Adoption of consistent value of
  proton thermal speed as 1.29e+6 cm/s at 10^4K.

  Adoption of routine which calculates photoionization
  integrals (phint53) which uses interpolation and smoothing.

  Inclusion of code for calculating aped rates for
  collisional excitation (not yet fully implemented).

  Inclusion of Bryans rates for collisional ionization.

  Added feature which allows an array of densities to be read in.
  This is described in the chapter on inputs.  It requires that
  the 'radexp' input variable be set to a number more negative
  than -100.  Then ordered pairs of (radius, density) are read
  in from a file called 'density.dat'.  Reading continues until
  the end of the file is reached.   The density and radius values
  override the values derived from the ordinary input parameters.
  But execution will stop if other ending criteria are satisfied,
  i.e. if the model column density exceeds the input value, or
  the electron fraction falls below the specified minimum.  The
  code will stop with an error if the density.dat file does not
  exist, or if the radius values are not monotonically increasing.

  Another new feature allows reading in of table spectra in units
  of log10(F_e).  This requires that the spectrum_units input
  parameter be set to 2.

- v2.2.1bn17 (Dec. 2013):

  Make calculation of photoionization related quantities modal,
  using lfpi:

   1: total pi only;
   2: pi + rec rates only;
   3: opacities and emissivities

  Also make h-c calculation use total rates add special funcsyn,
  func3p and heatf for calculations of spectral quantities.

  Add profile calculation (linopac) inside of ucalc when lfpi=3;
  take out profile calculation from stpcut.  This facilitates
  calculation of continuum photoexcitation (which is not yet
  included).

  Change i/o of step quantities; now includes populations,
  total emissivities and opacities, line emissivities,... Also
  change savd, unsavd.  Also change name of step quantities:
  xoN...M.fits where N=1,2,3,4 for various quantities and M=pass
  number.

  Add column, electron fraction, density as keywords in step files.

  Add comments in pprint, unify code to use the same statements when
  stepping thru each physical quantity:  levels, lines, all data, etc.

  Move search for auger width to new rotuine deleafnd

********************************************************************************
                                    NUSTAR
********************************************************************************

- NuSTARDAS v1.4.1:

  Major changes introduced in this version:

  * nuproducts:

    1) Modification of the internal run of the FTOOL 'grppha' to
       define a PI energy range by using two new input parameters
       'grppibadlow' (replacing 'grppibad') and 'grppibadhigh';
    2) Addition of the new input parameter 'usrgtibarycorr' to
       regulate the barycenter correction of the optional input
       user GTI file ('usrgtifile').

  * nupipeline:

    1) Modification of the call to the 'nuproducts' module;
    2) Addition of the new input parameter 'productsgtibarycorr'
       to regulate the barycenter correction of the optional input
       user GTI file ('productsgtifile') for spectrum and light
       curve extraction.

  Summary of changes:

  - nuproducts (grppha):

    Improvements to the user interface for nuproducts allowing the
    user to automatically apply grppha corrections to the output
    spectrum. Default values for the low/high bounds of "bad"
    channels in the grppha call are at 3 and 79 keV, which allows
    users to "ignore bad" in XSPEC to ignore data outside of the
    usable science range for NuSTAR. The user accepts responsibility
    for the effect of binning the data; we encourage the users to
    explore the literature on binning and the impacts of various
    fit parameters before using grppha.

  - nuproducts (barycorr):

    Improvement to the user interface for nuproducts allowing the
    user to specific a usrgti file in barycentric time (e.g. for
    individual pulses or bursts in a pulsar). By default, the
    pipeline assumes that usrgtis are given in NuSTAR-epoch time
    and are barycenter corrected.

NuSTARDAS v1.4.0:

- Major changes introduced in this version:

  * nuexpomap: 1) addition of a new parameter named 'indet2instrfile'
    to allow the generation of sky exposure map starting from a DET2
    instrument map; 2) algorithm optimization for execution time
    reduction;

  * nubackscale: addition of a new parameter named 'inexpomapfile' to
    provide in input a sky exposure map. This change allows to skip the
    internal generation of exposure maps and reduces the task execution
    time;

  * nulccorr: addition of two new parameters named 'inskyinstrfile' and
    'inaspecthistofile' to provide in input a sky instrument map and the
    associated aspect histogram file. This change allows to skip the
    internal generation of sky instrument maps and reduces the task
    execution time;

  * numkarf: addition of a new parameter named 'inexpomapfile' to provide
    in input a sky exposure map in the case of extended sources (parameter
    'extended=yes'). This change allows to skip the internal generation
    of exposure maps and reduces the task execution time;

  * nuproducts: 1) addition of the new input parameter 'rungrppha' to
    group the source energy spectrum through an internal run of the FTOOL
    'grppha'; 2) addition of an internal run of the 'nuexpomap' module
    and modification of the calls to the 'nubackscale', 'nulccorr' and
    'numkarf' modules;

  * nucalcpi: modification of the algorithm for GRADE 0 and GRADE 9-20
    events;

  * nupipeline: 1) handling of compressed TLE files in input; 2) syntax
    modification to support latest Perl versions.

Summary of changes:

- nuexpomap/nubackscale/nulccorr/numkarf/nuproducts:

  Performance improvement to avoid multiple runs of nuexpomap. The
  software now allows the user to store a single DET2 instrument map
  file (through the det2instrfile output keyword call to nuexpomap)
  and reuse this file for future runs, including changes to the
  vignetting energy, etc.  See section 4.9 of the NuSTARDAS User's
  Guide for more details and syntax.

  This has resulted in a dramatic speed increase for nuproducts runs,
  with decreases in run times of 20 to 80%, depending on the exact
  parameters.

- nucalcpi:

  Slight change in the reconstruction algorithm for how events with
  Grade 0 and Grades 9 through 20 are handled in the software. This
  change allows for fine tuning of the GRADE_GAIN and GRADE_OFFSET
  columns in the CLC CALDB file. There are associated updates to
  the CLC CALDB files (see CALDB release notes) which marginally
  improve the gain correction for all events.

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- bateconvert, batmasktaglc: Bug fix for closing file more
  than once (e.g. under OS X 10.9 x86_64).

UVOT:

- uvotattcorr: Apply delta quaternions for entire duration of
  exposure instead of at a single epoch.

- uvotimage: Work-around rare invalid values in UVOT event file
  WINDOW extension.

- uvotproduct: Since there are rare but intermittent issues using ds9
  to retrieve DSS images, try the SAO server if the STSci server fails
  to provide an image.

XRT:

- ISAC Build 30 Software Release - XRTDAS_v300:

  * xrtexpomap - Replaced 'nframe' input parameter with 'pcnframe'
                 and 'wtnframe'
               - Update 'DATE-OBS' keyword of the output exposure
                 map file

  * xrtlccorr - Modified default naming convention of output
                instrument map file

  * xrtmkarf - Fixed memory bug for the 64-bit architecture on
               Mac OS X 10.9.x.

  * xrtproducts - Added optional extraction of background products
                  for PC and WT mode
                - Added optional correction of the source light curve
                - Modified default naming convention of some output files

  * xrtpipeline - Added 'extractproducts' input parameter
                - Replaced 'exponframe' input parameter with
                  'expopcnframe' and 'expowtnframe'
                - Updated xrtproducts task call
                - Removed use of deprecated 'define' PERL function

********************************************************************************
                                     XTE
********************************************************************************

- fcollect: Fixed strcpy bug with overlapping memory.

- seextrct: Update to 4.3a; Increased maximum number of input files
  in SEEXTRCT from 100 to 999.  This is to match a similar change in
  SAEXTRCT v4.3a made previously.

********************************************************************************
                     Configuration / Third-party Packages
********************************************************************************

- Macs: Lift restriction on 64-bit builds on Mac OS X when heacore Perl
  modules are needed in the build.  Default Mac build architecture is
  now 64-bit; 32-bit builds are still available by configuring with
  --enable-mac_32bit_build(=yes).

- readline: Update to v6.3 and patches readline63-001 to 005.

- Tcl/Tk: Update to v8.5.15.

  Tk configuration: Disable use of freetype/fontconfig/xft in Tk.
  In some Mac X11 installations, Tk's configure successfully finds
  the routine 'XftFontOpen' linking with -lXft and proceeds to
  compile an alternate source code file (tkUnixRFont.c instead of
  tkUnixFont.c) that leads to build errors.

- wcslib: Update to WCSLIB version 4.20.
  http://www.atnf.csiro.au/people/mcalabre/WCS/

- XPA (FV/Hera): Update to XPA v2.1.15.
  http://hea-www.harvard.edu/saord/xpa/

- Fix deprecated use of 'defined' in Perl arrays (various tasks).
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.17
                                   July 29, 2015
********************************************************************************

The HEASoft 6.17 release is primarily driven by updates to the NuSTAR
and Swift/XRT software, but also includes updates to other packages which
have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

- Updates beyond version 3.37:

  - Added test to see if HAVE_UNISTD_H is defined, as a condition for 
    including unistd.h in drvrfile.c drvrnet.c, drvrsmem.c, and group.c.

  - Fixed bug when reading tile-compressed images that were compressed with
    the IRAF PLIO algorithm.  This bug did not affect fpack or funpack, but
    other software that reads the compressed image could be affected.  The 
    bug would cause the data values to be offset by 32768 from the actual 
    pixel values.

********************************************************************************
                                    CCFITS
********************************************************************************

- Bug fix to ImageExt::put (accessed through HDU's "operator<<").
  It was not showing output for the highest numbered axis.

- Converted 'delete' calls to 'free()' in KeywordCreator's
  getLongValueString function.  This removes memory mismatch errors
  in valgrind output.

********************************************************************************
                                     HEASP
********************************************************************************

- Fixed bug in arf::write which incorrectly gave the SPECRESP column
  the name EFFAREA.

- Check for multiple SPECTRUM extensions when reading a pha file.

- Added a routine to return the extensions with type SPECTRUM in a file.
  Also fixed a bug that PHAnumber was not being used in all relevant cases.

********************************************************************************
                                     FHELP
********************************************************************************

- fhelp now utilizes a parameter file to allow the setting of display
  preferences.  For example, setting text=yes (the default) will force
  all help files (.txt or .html) to be displayed in the current terminal
  in ASCII text format.  Setting text=no will allow html files to be
  displayed in your current browser (if the 'online' or 'local' parameter
  is set to 'yes').  The lynx linemode browser is now distributed and
  built as part of HEASoft to ensure that .html files can be parsed as
  text.  Run "fhelp -h" for more information. 

********************************************************************************
                                   ATTITUDE
********************************************************************************

- prefilter (geocal library): Update IGRF model to 2015 (version 12). The
  years touched are 2005-2010 (via derivative term); 2010 (changed from
  provisional to definitive); 2015 (provisional); 2015-2020 (provisional
  derivative extrapolation); overall changes are small.

********************************************************************************
                                   CALTOOLS
********************************************************************************

- addarf: Increased length of string for input ARFs to 5,000 characters
  and fixed compiler warnings.

- cmprmf: Fixed so that the NUMELT and NUMGRP keywords are updated.
  This bug was generating errors (e.g. "Group Array dimension is too
  small") in downstream tools (i.e. marfrmf).

- genrsp: Fixed bug in the case that the response energies extend beyond
  the channel energies. Any response from the energies outside the channel
  energy range was not being calculated.

********************************************************************************
                                    FUTILS
********************************************************************************

- flist: Fixed output format (to integer instead of float) for unsigned
  integer columns with scaling keywords set.

- fverify: When checking TDISPn keywords, allow TFORMn='K' when TDISPn
  has format F, E, or D.

********************************************************************************
                                    HEAGEN
********************************************************************************

- swco.dat: Valid through: 2015Jul06 at 08:24:05.921UTC.

********************************************************************************
                                    HEASARC
********************************************************************************

- addspec: Added single quotes around filenames in the expression passed
  to mathpha. This allows the filename to include a "/" without mathpha
  interpreting it as a division.

- extractor: Fixed a misleading error message when reading ROSAT data
  which has a non-standard name for the extension containing the events.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftcreate: For on/off bits datatype, use strtoul to read the input data.
  Using the previous hex format specifier ('%lx') to sscanf the data string
  wasn't suitable, since it can misinterpret non-hex formats.

- ftdiff: If hdumaxdiff <=0, ignore hdumaxdiff and report all differences.

- fthedit: For "single keyword" mode, parse the input 'keyword=value'
  card string to return a properly formatted 80-char string for inserting
  the new record.

- ftverify: When checking TDISPn keywords, allow TFORMn='K' when TDISPn
  has format F, E, or D.

********************************************************************************
                                    XSELECT
********************************************************************************

- Added a 'history' command to toggle writing of the history file
  (xselect.hty) on or off, to avoid problems when running multiple
  instances of xselect.  Also allow for an alternate location for
  xselect.hty to be written, specified via the XSEL_HISTORY_DIR 
  environment variable. 

- xselect.mdb: Added NICER entries and updated NUSTAR entry for mkf name.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.17 includes Xspec v12.9.0:

 http://heasarc.gsfc.nasa.gov/xanadu/xspec/issues/issues.html

New features:

- Mix model components are no longer heavily restricted in their usage.
  Previously mix components could only be placed at the start of a model
  expression, to operate on the results of the rest of the expression.
  Now they can be inserted throughout the expression in the same manner
  as convolution components.

  Models with mix components can also be assigned to source numbers 
  other than 1.  A corollary of this is that a mix model is no longer
  required to operate on all currently loaded spectra.

  To allow more than one mix model at a time the syntax for XFLT####
  keywords has been generalized. These keywords are now strings of form
  "key: value" with xspec maintaining an internal database of key, value
  pairs which mixing model code can access. Backward compatibility with
  the old version of XFLT#### containing only a value is maintained.

- Expanded the types of expressions allowed in parameter linking.  It
  can now handle the same mathematical functionality supported in mdefine
  equations.  Related to this, parameters can also be specified as 'p#'
  and 'modelName:p#' in link expressions, as well as the old '#' and 
  'modelName:#'.  The link expressions are now displayed using the 'p#'
  format.

- The output of the 'plot margin' command is now independent of the grid
  size.  There is a new 'plot integprob' command which also must be run
  after the 'margin' command and which plots the integrated probability
  within the contours shown.

- The data and back commands now handle files with multiple SPECTRUM
  extensions.  There are a number of ways of specifying a particular
  extension: filename{N} will use the Nth SPECTRUM extension;
  filename{SPECTRUM2} will look for an extension called SPECTRUM2;
  filename{back} will use the first SPECTRUM extension with the HDUCLAS2
  keyword set to 'BKG'; filename{name=value} will look for a SPECTRUM
  extension with keyword name set to value (in this case there must be
  no spaces within the {}). If the BACKFILE keyword in a source filename
  is set to the filename itself then XSPEC will get the background from
  the extension with HDUCLAS2 set to 'BKG' (this, finally, makes Chandra
  level 3 files work seemlessly in XSPEC).

- The 'error' command now has a 'nonew' option.  This determines whether
  to repeat the calculation when a new minimum is found.  Previously it
  was relying on the 'query' setting to make this decision.

- Added grey-scale image as background to to contour plots. 'dem' plots
  now display a histogram. The new 'eqw' plot option shows the
  distribution of equivalent width values after running the eqwidth
  command with the err option.

- New model 'nlapec'. There is also an APECNOLINES xset option which
  will turn off lines for all apec models.

- The models using AtomDB files now require the line files to be sorted
  in increasing order of energy within each element and ion. This allows
  a speed-up in the model calculation.

- Replaced the rescalecov script with the 'chain rescale' command.

- The 'plot delc' command now works for cstat, plotting (obs-mod)/error,
  however it is important to remember that this is not plotting
  contributions to the statistic.

Enhancements previously released as patches to 12.8.2:

- A new -udmget64 option has been added to initpackage.  This is
  intended for Mac platform users with local Fortran models which still
  make use of the udmget memory allocation function.

- 'tclout steppar' can now retrieve values of the variable parameters as
  well has the fixed parameters which are being stepped through.


All bug fixes to v12.8.2 released as patches are included in v12.9.0.
In addition the following problems have been corrected:

- For the case where counting statistics are not applied, 'fakeit' now
  outputs the spectrum in a RATE column rather than COUNTS.  This is
  to remove bias caused by truncation errors.  It also now outputs a
  STAT_ERR column and sets the POISSERR flag to false.

- Special characters have been removed from all model parameter names
  and (generally) replaced with underscores.  This is to make their
  name strings more easilty accessible in PyXspec.

- When calculating 'tclout peakrsid' with Cstat, it should not make
  use of correction files.

- Redundant model fold calculations have been removed during certain
  update contexts.

- Fix to vequil model array assignment error.

- The default filenames for fakeit output should always be in the
  current run directory, even when the response file is in a different
  directory.

- A file-write race condition has been eliminated for the case of
  running 'lmod' in parallel XSPEC sessions.

- The vvnei model had the tau and meankT parameters flipped.

- The AtomDB input files were being reopened unnecessarily often.

*********************

PyXSpec Change Log:

New Features:

- Local models may now be written in Python and inserted into XSPEC's 
  models library with new AllModels.addPyMod() function.

- The plot array retrieval interface (ie. Plot.x(), Plot.y()) has
  been expanded to allow retrieval from secondary plot panels in a
  multi-panel plot.

- New Parameter.index attribute.

- New backscale attribute for Spectrum and Background classes.

- Added new function Fit.stepparResults() for retrieving results of
  most recent steppar run. (Previously available as a patch)

- New noWrite option added to AllData.fakeit (Previously available
  as a patch)

Fixes:

- The Model.__call__ function now returns Parameter objects by
  reference rather than by value. This is to allow the returned
  object to retain any custom attributes the user may have added.

- Improved handling of Ctrl-c breaking in several prompting contexts.

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.2.1bn24 - updates since v221bn21 (HEASOFT 6.16) include:

- Fixed error in distributing collision rates between magnetic
  sublevels of H and He-like ions in atomic data atdb.fits.

- Make the printing of heating and cooling rates rational: httot
  and cltot are the true total heating and cooling. Also decrease the
  number of lines which are binned and written to xout_spect1.fits in
  the interest of speeding things up.

- Include print-out of column densities in xstinitable.

- New version of xstar database which includes fine structure for
  He-like ions.

- Fixed error in calculation of rates from data type 16 (Iron
  collisional ionization).

- Photoionization integration routine now uses thresholds calculated
  on energy bin boundaries.  This allows for better evaluation of the
  Milne integral, though it may affect photoionization rates in the
  case of very coarse energy bins.

- Removed redundant subroutine phint53new.f.

- Added code to print ion column densities as part of lpri=2 output

- Increased buffer size in subroutine fstepr2 which writes to
  xo01\_detal2.fits such that table of lines is not artificially
  truncated.

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS v1.5.1:

Major changes introduced in this version: 

- numkarf: 1) addition of the new input parameters 'pilowarf' and
  'pihigharf' to define the energy range used to calculate the box
  ARF weights for the 'addarf' internal run (extended sources case);
  2) addition of the new input parameter 'flatflag' to apply a flat
  spatial counts distribution to calculate the box ARF weights for
  the 'addarf' internal run (extended sources case).

- numkrmf: bug fix for addrmf execution when CALDB in remote mode
  is used.

- nuproducts: addition of the new input parameters 'pilowarf',
  'pihigharf' and 'flatflagarf' to support the numkarf changes.

- nupipeline: 1) addition of the new input parameters 'pilowarf',
  'pihigharf' and 'flatflagarf' to support the numkarf changes;
  2) handling of the cases 'createexpomap=yes' and/or 'exitstage=3'
  when the '01' cleaned event file is empty.

Summary of changes:

- numkarf:

  When observing extended sources it's often the case that the
  high-energy photons have a different spatial distribution than
  the low-energy photons.  Prior to this patch, the ARF generator
  used the spatial distribution for all photons over the allowed
  NuSTAR energy range (1.6-165 keV) to determine the box ARF
  weights. The new keywords (pilowarf and pighigharf) can be used
  to set a specific energy range (e.g above >40 keV or 5-7 keV).
  Recall that the conversion between energy and PI is :
  PI = (keV - 1.6) / 0.04 channels.

  Additionally, we have added the option to use a "flat" spatial
  distribution over the source region (e.g. if the intrinsic source
  distribution is unknown) which equally weights all boxes in the
  source region when generating the ARF.

- nupipeline / nuproducts :

  Added feed through keywords to support the above changes to numkarf.

  Also improved handling of cases when high level (Stage 3)
  science products are being produced but the SCIENCE data mode
  file is empty. This commonly occurs during SLEW sequence IDs and
  previously the pipeline would exit with an error.

********************************************************************************
                                    SUZAKU
********************************************************************************

- xisexpmapgen: Fix a malloc error resulting from (at least one) use
  of a combined (3x3 and 5x5) XIS0 event file.

- aexisconf.list (aepipeline): New version which adds the following:

  2011-05-17: New list required after sequence 106001010
   Code 'f' was recycled

  2012-02-17: New list required after sequence 506025010.
   Code 'k' was recycled

  2013-10-25: New list required after sequences 408009010 and 408024010
   Code 'w' was recycled; Code 'x' was recycled

  2014-10-16: New list required after sequences 409008010 and 709020010
   Code 't' was recycled; Code 'g' was recycled

  2014-11-10: New list required after sequence 109008020
   Code 'n' was recycled; Code 'o' was recycled

********************************************************************************
                                     SWIFT
********************************************************************************

UVOT:

- uvotexpmap / uvotshiftadd: Fixed UVOT exposure maps created with
  method=SHIFTADD to match EXPOSURE (previously missing dead time
  correction).

- uvotsequence: Corrected the labels on the UGRISM/VGRISM rows of
  the plot.

XRT (ISAC Build 31 Software Release - XRTDAS_v310):

- xrtmkarf:

  Fixed memory bug that occur when the number of the extraction
  region sub-boxes is larger than 100 Fixed bug in exposure map
  pixels numbering.

  Modified 'expofile' input parameter type from "hidden" to "queried".

- xrtproducts:

  Changed default value of 'correctlc' parameter from "no" to "yes".
  Modified 'expofile' input parameter type from "hidden" to "queried".

- xrtexpomap:

  Updated 'DATE-END' and 'MJD-OBS' keywords of the output sky exposure
  map.

- xrtgrblc:

  Changed default value of 'lccorravg', 'pcreglist' and 'wtreglist'
  input parameters.

- xrtpipeline:

  Updated 'SOFTVER' and 'CALDBVER' keywords in output event files.
  Updated xrtproducts task call to handle 'expofile' input parameter
  as "queried" type.

********************************************************************************
                                     XTE
********************************************************************************

- correctlc: Fixed runtime abort caused by variable of insufficient size.

********************************************************************************
                        Configuration / Miscellaneous
********************************************************************************

- Updated reference data files (leapsec.fits, tai-utc.dat) for
  2015-07-01 leap second.

- PGPLOT: Added configurable option for the PNG driver.  To enable
  the PNG driver, run the heasoft-6.17/BUILD_DIR/configure with the
  option "--enable-png", and use "--with-png" to specify the location
  of the PNG library (if it is in a non-standard location).

- Mac OS X: Build "Universal" (both i386 & x86_64 architectures)
  libraries in heacore to prevent missing symbol errors when trying
  to use the heacore Perl module libraries.

- (FV) Update to FitsTcl 2.4 (used by the FV GUI).
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.19
                                    May 11, 2016
********************************************************************************

The HEASoft 6.19 release is primarily driven by updates to the NuSTAR
software and the first public release of analysis software for the Hitomi
mission, but also includes updates to other packages which have been
revised to mirror the current development versions in use at the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

HEACORE:

- CFITSIO: Version 3.39:

  - Added new routines suggested by Eric Mandel (CFA):

    1) ffhisto3 is similar to ffhisto2, except that it does not close
       the original file.
    2) fits_open_extlist is similar to fits_open_data except that it
       opens the FITS file and then moves to the first extension in
       the user-input list of 'good' extensions.

  - In ffpsvc and ffprec, it is necessary to treat CONTINUE, COMMENT,
    HISTORY, and blank name keywords as a special case which must be
    treated differently from other keywords because they have no value
    field and, by definition, have keyword names that are strictly
    limited in length.
    
  - Added the Fortran wrapper routines for the 2 new string keyword
    reading routines (FTGSKY and FTGKSL), and documented all the
    routines in the FITSIO and CFITSIO users guides.

  - In ffinttyp, added explicit initialization of the input 'negative' 
    argument to 0.

  - Added new routine to return the length of the keyword value string:

        fits_get_key_strlen / ffgksl

    This is primarily intended for use with string keywords that use
    the CONTINUE convention to continue the value over multiple header
    records, but this routine can be used to get the length of the
    value string for any type keyword.

  - Added new routine to read string-valued keywords:

         fits_read_string_key / ffgsky

    This routine supports normal string keywords as well as long string
    keywords that use the CONTINUE convention. In many cases this routine
    may be more convenient to use then the older fits_read_key_longstr
    routine.

  - Changed the prototype of fits_register_driver in fitsio2.h so that
    the pointer definition argument does not have the same name as the
    pointer itself (to work around a bug in the pgcc compiler).
    
  - Added the missing FTDTDM fortran wrapper definition to f77_wrap3.c.
  
  - Modified Makefile.in and configure.in to add LDFLAGS_BIN for task
    linker flags, which will be the same as LDFLAGS except on newer
    Mac OS X where an rpath flag is added.

  - Modified Makefile.in to add a new "make utils" command which will
    build fpack, funpack, cookbook, fitscopy, imcopy, smem, speed, and
    testprog.  These programs will be installed into $prfix/bin.

  - Fixed a bug when attempting to modify the values in a variable-
    length bit ("X") column in a binary table.

  - Reinstated the ability to write HIERARCH keywords that contain
    characters that would not be allowed in a normal 8-character
    keyword name, which had been disabled in the previous release.

********************************************************************************
                                    FUTILS
********************************************************************************

- fverify:

  Fixed one-line summary in batch (file list) mode.  fverify was
  erroneously reporting one-line summary success for files which
  actually should have failed.

********************************************************************************
                                    HEASARC
********************************************************************************

- extractor:

  Read in the DETNAM keyword from the input event files and include
  in the keywords written out.

  Added copying of keywords from the EVENTS extension in the input
  file into the SPECTRUM extension of the output file.  Remove
  duplicate TELESCOP etc keywords.

  Fixed bug when writing an event file from multiple input event
  files using the "slow" method when there are vector columns.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftverify:

  Fixed one-line summary in batch (file list) mode.  ftverify was
  erroneously reporting one-line summary success for files which
  actually should have failed.

********************************************************************************
                                    XIMAGE
********************************************************************************

- Fixed memory fault that occurred when remapping images with a wide
  pixel FOV (on the order of 864x864 pixels) and a dense photon
  distribution (i.e. something such as a 1536x1536 image with a rebin
  scale of 16).

- ximage.mdb: Added instrument definition for Hitomi.

********************************************************************************
                                    XSELECT
********************************************************************************

- Improved diagnostic output and changed to handle tabs in
  xselect.mdb.  Modified so that select chip will work for any
  mission and instrument which has ccol set in the xselect.mdb.
  Only in the case of Chandra and XMM will it check for the
  chip(s) selected to be within the valid range.  Added HITOMI
  entries to xselect.mdb.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.19 includes Xspec v12.9.0n (patch level "n"):

 http://heasarc.gsfc.nasa.gov/xanadu/xspec/issues/issues.html

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.31 - updates since v221bn26 (HEASOFT 6.18) include:

An error affecting the use of the optical depths and escape
probabilities in the continuum escape from  2-sided models was fixed.

An error in the atomic data (statistical weights) for the upper
levels of  N VI n=1-2 lines was fixed.

Change to pprint to make line labels for inward and outward
emission consistent.

Updates to version 2.3 which fix the compton heating error found
in 10/2015.

********************************************************************************
                                    NUSTAR
********************************************************************************

- Updates for NuSTARDAS 1.6.0:

  Please note that this version requires NuSTAR CALDB dated 2016
  03/15 or newer and will not work with older versions of the CALDB.

  Major changes introduced in this version:

  nusplitsc (NEW TASK):

  When the primary star tracker (also known as a camera head unit, or
  CHU) is blinded by the Earth limb or glint from the Sun the data is
  recorded in 'Mode 06' by the pipeline. In this mode the pipeline
  uses the spacecraft start rackers (CHUs 1, 2, and 3) to determine
  the sky position of each count. This sky position can be subtly
  different when different combinations of star trackers are guiding
  the observatory pointing, resulting in blurring of the output image.

  nusplitsc allows the user to generate separate independent output
  files for each CHU combination, each of which should have reduced
  blurring and higher fidelity. We note that the absolute position of
  these images may still be different than the Mode 01 data set and do
  not recommend using RA/DEC coordinates when extracting produces in
  these modes without first inspecting the images.

  See the Observatory Guide as well as Walton et al. (2016) and
  Grefenstette et al. (2016) for more details.

- nucalcsaa: The SOC has optimized new algorithms to automatically
  generate GTIs that exclude regions of the orbit that produce
  enhanced background counts in the detector.  See the Observatory
  Guide for a full description of these new modes and their effects.

- nupipeline: New options to accomodate the nusplitsc and nucalcsaa
  tasks. Added optional call to the new 'nusplitsc' module (parameter
  'runsplitsc', set to 'no' by default) and modified the call to
  'nucalcsaa' from nupipeline.

- nuflagbad: Minor bug fix to exclude hot pixels in the output
  badpixel file (nu*_bp.fits) in case of reprocessed files;

- nuscreen: Addition of a new keyword (OBSMODE) storing the NuSTAR
  observing mode to the output cleaned event files;

- nufilter: Addition of the keywords MJDREFI and MJDREFF in the
  output filter (nu*.mkf) file;

- nucoord: Value update of the RA_NOM and DEC_NOM keywords in the
  +0 and +6 extension of unfiltered event files.

********************************************************************************
                                     SWIFT
********************************************************************************

UVOT:

- uvotcentroid: Allow sexigesimal position in region file. Correct
  typo in variable name (was mixing ccord (wrong) and coord.

- uvotproduct: Modified to use swifttime when converting between MET
  and UTC and updated labels to reflect that.

- uvotscreen: Update GTI and WINDOW extensions to reflect screening.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.20
                                 January 18, 2017
********************************************************************************

The HEASoft 6.20 release is primarily driven by updates to XSPEC, NuSTARDAS,
XRTDAS, and the Hitomi software, but also includes updates to other packages
which have been revised to mirror the current development versions in use at
the HEASARC.

As before, configuration-related changes thoughout the package means that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Version 3.41:

- The change made in version 3.40 to include strings.h caused problems on
  Windows (and other) platforms, so this change was backed out. The reason
  for including it was to define the strcasecmp and strcasencmp functions,
  so as an alternative, new equivalent functions called fits_strcasecmp and
  fits_strncasecmp have been added to CFITSIO.as a substitute. All the
  previous calls to the str[n]casecmp functions have been changed to now
  call fits_str[n]casecmp. In addition, the previously defined ngp_strcasecmp
  function (in grparser.c) has been removed and the calls to it have been
  changed to fits_strcasecmp.
     
- The speed.c utility program was changed to correctly call 
  the gettimeofday function with a NULL second arguement. 

Version 3.40:

- fixed a bug when writing long string keywords with the CONTINUE convention
  which caused the CONTINUE'd strings to only be 16 characters long, instead
  of using up all the available space in the 80-character header record.

- fixed a missing 'defined' keyword in fitsio.h.

- replaced all calls to strtok (which is not threadsafe) with a new ffstrtok
  function which internally calls the threadsafe strtok_r function.  One 
  byproduct of this change is that <strings.h> must also be included
  in several of the C source code files.

- modified the ffphbn function in putkey.c to support TFORM specifiers that
  use lowercase 'p' (instead of uppercase) when referring to a variable-length
  array column.

- modified the lexical parser in eval.y and eval_y.c to support bit array 
  columns (with TFORMn = 'X') with greater than 256 elements. Fix to bitcmp 
  function:  The internal 'stream' array is now
  allocated dynamically rather than statically fixed at size 256.
  This was failing when users attempted a row filtering of a bitcol
  that was wider than 256X. In bitlgte, bitand, and bitor functions, replaced 
  static stream[256] array allocation with dynamic allocation.  

- modified the ffiter function in putcol.c to fix a problem which could
  cause the iterator function to incorrectly deal with null values.  This
  only affected TLONG type columns in cases where sizeof(long) = 8, as well
  as for TLONGLONG type columns.

- Fix made to uncompress2mem function in zcomprss.c for case where output
  uncompressed file expands to over the 2^32 (4Gb) limit.  It now
  checks for this case at the start, and implements a 4Gb paging
  system through the output buffer.  The problem was specifically
  caused by the d_stream.avail_out member being of 4-byte type uInt,
  and thus unable to handle any memory position values above 4Gb. 

- fixed a bug in fpackutil.c when using the -i2f (integer to float) option
  in fpack to compress an integer image that is scaled with non-default values
  for BSCALE and BZERO. This required an additional call to ffrhdu to reset
  the internal structures that describe the input FITS file.

- modified fits_uncompress_table in imcompress.c to silently ignore the
  ZTILELEN keyword value if it larger than the number of rows in the table
  
- Tweak strcasecmp/strncasecmp ifdefs to exclude 64-bit MINGW
  environment, as it does not lack those functions. (eval_l.c,
  fitsio2.h)

- CMakeLists.txt: Set M_LIB to "" for MINGW build environment (in
  addition to MSVC).

- Makefile.in: Add *.dSYM (non-XCode gcc leftovers on Macs) to
  clean list.  Install libs by name rather than using a wildcard.

- configure: Fix rpath token usage for XCode vs. non-XCode gcc on Macs.

********************************************************************************
                                    HEASP
********************************************************************************

- Added interpolateAndMultiply to multiply rmf by a vector
  of factors on energy binning different from the response.

- Fixed bug in writeMatrix which caused an empty ORDER column
  to be written if there was no ORDER information.

- Added overloads of SPstring2Real and SPstring2Integer to convert
  vectors of strings.

- Added handy utility routine to parse ranges in a string.

- Added routines to return a vector of strings containing
  all the keywords from the primary or extension header.

- Added support for the LOELIMIT and HIELIMIT keywords in the table
  model file. These are stored as LowEnergyLimit and HighEnergyLimit
  in the object and assumed to specify the model value to be used
  when the energy is below/above those tabulated.

********************************************************************************
                                   ATTITUDE
********************************************************************************

- prefilter: Add 'timeadj' parameter to address Swift's clock drift.
  This parameter can be used to adjust times used for calculations.
  TIME_ADJ = TIME + offset where the value of offset depends on the value
  of the timeadj parameter. The default setting (timeadj=DEFAULT) allows
  mission-specific determination of offset.  timeadj=CONST:<value> sets
  offset to value. timeadj=KEY:<value> sets offset to the value of a keyword
  from the attitude file.  timeadj=LEAPS sets offset to the opposite of the
  number of leap seconds since missepoch to start.

  For the Swift mission, DEFAULT is treated as KEY:UTCFINIT (if that keyword
  is present), or LEAPS if it is not. For all other missions, DEFAULT is
  treated as LEAPS. Note that LEAPS is consistent with past behavior.

********************************************************************************
                                   CALTOOLS
********************************************************************************

- genrsp: Set resp_file and chan_file to 'none' when inrfil is not 'none'.
  Fixes a bug in which genrsp reported 'Failed to open response energy
  relation file' because resp_file was neither specified nor set to 'none'
  and was just an empty string.

********************************************************************************
                                    FUTILS
********************************************************************************

- fverify: Added checks and warnings for 'P' format variable length columns
  when either the row length or heap offset is detected to be greater than the
  max signed 4-byte int.  CFITSIO allows these values up to max unsigned int,
  which is more lenient than the FITS standard.  Also updated to allow for
  longer input file names.

********************************************************************************
                                      FV
********************************************************************************

- Allow a build of FV in the Cygwin environment for MS Windows. The POW
  display device is partially inoperative, but the ds9 device may be used
  instead.

********************************************************************************
                                    HEAGEN
********************************************************************************

- arftable:

  * Behavior change: Converts energy units of output file to be the same
    as those of the input RMF file if they are different.
  * New parameter:  writeevtfile (boolean): if set to yes, a file will
    be written listing the subset of photons that reach the focal plane
    unblocked by any object in the optical path.  Objects are specified
    by the parameters objecttype, imimagefile, objectheights, objectradii,
    imagerotangles, xoffsets, and yoffsets.
  * Bug-fix: The raytracing photon history file is now read and processed
    in chunks of 1000000 rows, rather than all at once, in order to
    mitigate memory problems resulting from large files.

- barycorr:

  * Fix HDU position handling: HDU position was not properly being updated,
    with the effect that TSTART/TSTOP/etc. in the final time-related HDU
    were not being corrected.

- xrtraytrace:

  * Behavior change: Accounts for a rotation between the reference frame
    of the Telescope Definition File (TDF) and the telescope physical
    coordinate system.  This angle is given by the TELFPROT keyword in
    the TDF MIRROR extension.

- swco.dat: Update to include 2017.0 leap second.

********************************************************************************
                                    HEASARC
********************************************************************************

- extractor: Correctly handle the case of a vector column in the event
  file before the X and Y columns.  Ignore trailing blanks in values
  when comparing for duplicate keywords.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftdiff: Fix case of TBIT columns where an incorrect col_repeat value
  caused ftdiff to miss cases where bits differed.

- ftverify: Added checks and warnings for 'P' format variable length columns
  when either the row length or heap offset is detected to be greater than the
  max signed 4-byte int.  CFITSIO allows these values up to max unsigned int,
  which is more lenient than the FITS standard.  Also updated to allow for
  longer input file names.

********************************************************************************
                                     XSPEC
********************************************************************************

Xspec v12.9.1:

New features:

- New Models:

  carbatm          - NS non-magnetic C atmosphere 
  clumin           - calculates luminosity
  hatm             - NS non-magnetic H atmosphere 
  ismabs           - High-resolution ISM absorption
  rfxconv          - reflection from ionized disk
  slimbh           - slim accretion disk
  snapec           - galaxy cluster spectrum using SN yields
  (b)(v)(v)tapec   - apec model with different temperatures for continuum
                     and emission lines
  tbfeo            - tbabs model with O and Fe only variable
  tbgas            - tbabs model with no grains
  tbpcf            - tbabs model with partial covering
  tbrel            - tbabs model that allows negative columns
  vashift          - velocity shift an additive component
  vmshift          - velocity shift a multiplicative component
  voigt            - emission line with a Voigt profile
  xilconv          - reflection from ionized disk
  xscat            - dust scattering out of the beam 

- Updated Models:

  - apec models updated to AtomDB 3.0.7
  - nei models updated to AtomDB 3.0.4 eigen files
  - The apec code now has the ability to add new line shapes for broadening
    although at present only a single Gaussian line shape is operational.
  - A new xset option APECMINFLUX can be used to specify a minimum line flux
    below which lines are not broadened. Also the maximum flux in any line
    in the apec model is saved as apecmaxlineflux and this can be recovered
    using tcloutr modkeyval apecmaxlineflux. At the moment both this and
    APECMINFLUX do not include the 1e14 normalization factor and any time
    dilation correction.
  - the code for the various CEI models was rationalized and there is a new
    C++ routine calcMultiTempPlasma which can be used by other models. The old
    Fortran sumdem routine remains as a wrapper for old models.
  - tbabs model code has been updated. The old version is available by using
    xset TBABSVERSION 1.
  - updated nsmaxg model with new tabulated model files.
  - increased the speed for accessing values from table models.
  - modified table model code to support new keywords LOELIMIT and HIELIMIT to
    specify model values to be taken below and above the tabulated energies.

- Plotting:

  - added low and high energy limits to setplot id so lines are only shown
    for the specified energy range.
  - added setplot (no)contimage to turn on (off) the background image in
    contour plots.
  - the keV to Angstrom conversion value stored in Numerics.h has been updated
    to that from CODATA 2014.

- Fitting:

  - Added parallelization to chain walker calculations and to the goodness
    simulations.
  - The 'error' command can now process parameters from more than 1 model
    in a single call.
  - In the various cstat statistics any correction file spectrum is now taken
    account. This does implicitly assume that the correction file has Poisson
    statistics.
  - the Tcl script lrt.tcl now uses the fakeit nowrite option so intermediate
    faked files are not written out. Also, now works for multiple data groups.

- Input/Output:

  - increased the precision of the reported output from the 'tclout'
    command options.
  - increased the allowed flux (counts) to beyond the 4-byte limit when
    running 'fakeit' with counting statistics selected.
  - new tclout option fileinfo writes the value of the keyword given as the
    fileinfo argument. e.g. tclout fileinfo detnam returns the value of the
    detnam keyword in the spectrum extension.

- Xspec.init file:

  - added PARALLEL to set default parallelization options
  - added NEI_VERSION to set default version for NEI models
  - added CONTOUR_IMAGE to set default for adding image to contour plots
  - changed default cross-sections from bcmc to vern

- The manual has now been rewritten in LaTeX. The appendix on statistics
  has been expanded. Cross-referencing has been improved.

All bug fixes to v12.9.0 released as patches are included in v12.9.1.
In addition the following problems have been corrected:

- A previous revision to the 'goodness' command removed the requirement
  that the fit must be in a valid state at the start, however it was 
  incorrectly marking the fit as being in a valid state at the end.

- When re-reading a previously loaded table model file, was not
  correctly recognizing whether or not parameter error values existed.

- A spectrum's displayed net count rate variance needs to be updated
  when the fit weighting method gets changed.

******************

PyXspec Change Log (v2.0):

New Features:

(*) = previously available as XSPEC patches.

- Now compatible with Python 3.x.  (No longer compatible with Python
  versions prior to 2.5.)
  
- Added `Xset.save()` and `restore()` functions for saving and 
  recovering the state of a PyXspec session. 
   
- New adjustable attributes for the `Chain` class: `walkers` and 
  `algorithm`.*

- `AllModels.tclLoad()` method added to provide a lower-level 
  alternative to the `lmod()` local model loading scheme.*
  
- `Xset.allowPrompting` attribute provides option for turning on/off 
  XSPEC prompting.  This can be useful in iPython environments where 
  certain contexts can lead to infinite prompting loops.
  
- PyXspec manuals have been converted from Doxygen-generated to
  Sphinx-generated HTML and PDF.

Fixes:

- Was previously unable to unlink a linked parameter in a Python-coded
  local model.*

********************************************************************************
                                     XSTAR
********************************************************************************

Version 2.39 - updates since v2.31 (HEASOFT 6.19) include:

- Changes to turn on printing in the rstepxx and fstepxx routines.
  Also, increase size of temporary arrays in those routines to match nnnl.

- Changes to correct for incorrect dimension in PARAM file which led
  to bad numerical results for Cu and Zn.  Changes to add printing of
  element by element heating and cooling rates.

- Fixed error in pprint which prevented correct filling of xout_abund1.fits.

- Fixes to atomic data to account for direct excitation of fine
  structure levels of He-like ions.

- Strip out fictitious fe xxiv collisional ionization to 1s2s level
  of fexxv.

- Fix to ucalc.f which calculates detailed balance for data type
  95 (Bryans collisional excitation) without numerical errors.

- Changes to include updates to ucalc to include calculation of
  type 97 rates (inner shell collisional ionization; currently
  no data of this type is included).

- Local version of getlun and associated routines to properly
  keep track of opened and freed logical units.

- Repair extra data records for type 76 data, 2 photon decays, and
  changes which prevent printing of type 76 data along with lines.

- Fixes to He-like atomic data to correct for some missing rates
  affecting levels created when mapping from ls to lsj levels.

- Change to ucalc and calling routines to not call linopac for lines
  when opacity*delta(r) is less than 1.e-8.  This saves execution time.

- New feature:  no fits files will be saved if  lwrite < 0.

********************************************************************************
                                    HITOMI
********************************************************************************

Patch Hitomi V005a released Jan 18, 2017

Mission Applications:

- aharfgen , ahsxtarfgen , hxirspeffimg
  New parameter: polydeg (string): polynomial order for the fitting. 
  For the HXI, the DEFAULT value sets the polynomial order to 5.  For 
  the SXI and SXS, the DEFAULT value sets the polynomial order to an 
  internal test for the best polynomial order.  Other allowed values 
  are 1 to 5 for the HXI and 1 to 10 for the SXI and SXS.
   
- ahsxtarfgen
  Behavior change: the default behavior is changed since the 
  polynomial order to provide a stable fit solution is tested internally
  with a minimization technique. The parameter value polydeg determines 
  whether or not the routine should use the default behavior.

- xrtraytrace 
  Bug-fix: correct the behavior of decreasing area with increasing 
  number of input photons for large region.  This affects the raytracing 
  output when run with flat or beta model in conjunction with very 
  large regions (~above 12 arcmin) and number of events larger than
  200000 on axis.     

SXI

- sxipi 
  Bug-fix : in a debug statement array out of range for window mode data 
  when reading CTI from CALDB giving seg fault. No effect on the actual
  calculation but just on the print statements

SXS 

- mxstime
  Bug-fix : fine gti overlapping are checked using the pulselength and 
  compare the afterglow length.  For files where the start of the mxs is 
  outside of the start of file the code was not using the correct 
  pulselength from the last row. This is only affected if the afterglow 
  flag is set to yes.



Hitomi V005 - Major changes introduced in this version:

General Applications:

- ahgtigen:

  * Bug-fix: Handling of the parameters cpkeyword and upkeyword was
    corrected. If upkeyword=yes, timing keywords are updated in all
    output GTI files, whereas previously, this update happened only for
    files resulting from a merging of GTI. If cpkeyword=all, keyword
    copying is now delegated solely to the maketime task, whereas
    previously, the copying was done a second time redundantly by ahgtigen.

- ahpipeline:

  * Behavior change: MKF and EHK GTI are now copied to the end of
    unfiltered event files.
  * Behavior change: Updates timing keywords in the MKF and EHK GTI for
    all instruments and copies other keywords from unfiltered event file.
  * Behavior change: The EHK file is now replaced with the EHK2 file
    (which includes columns based on SXS antico rates) if the latter
    is successfully created.
  * Behavior change: For SXS screening, the PIXEALL2 label has been
    changed to PIXELALL3.
  * Parameter change: r2tol, bisectolshift, bsectolwidth (SXS gain
    fitting parameters): default values changed from 0.01, 0.1, and 0.2,
    respectively, to 0.001, 0.001, and 0.001.
  * Bug-fix: For SXS, the PIXEL column was omitted from lost fake GTI
    extensions; now included.
  * Behavior change: Moved proximity flagging from the first run of
    sxsflagpix to the second run of sxsflagpix.
  * Behavior change: For SXS, Perseus observation stop date and time have
    been changed from 2016-03-08T00:38:00 to 2016-03-04T00:41:00.


Mission Applications:

- aharfgen
  * Parameter change: auxtransfile:  If set to CALDB, a CALDB query is
    done.  Previously, the string CALDB was not detected and was passed
    unmodified to the called tasks.
  * Parameter change: regmode:  Now should be set to RADEC to indicate
    that the regionfile is in world coordinates, for consistency with
    coordinate terminology in other tools.  Previously, the value SKY
    was used incorrectly to indicate world coordinates.

- ahbackscal
  * NEW TOOL: Corrects the BACKSCAL keyword in a spectrum file that has
    been extracted using xselect.

- ahcalcl32ti
  * Behavior change: TZEROn keyword is now written for L32TI column to
    make it effectively unsigned.

- ahfilter
  * Bug-fix: Under certain conditions, the output EHK file was incorrectly
    deleted at the end of processing like a temporary file.  This happened
    when the output EHK file path contained more than one dot and the
    infileroot parameter was a non-empty string.  The parsing of file
    names has been corrected to avoid this outcome.

- ahgainfit
  * Parameter change: r2tol (convergence criterion for R^2): default value
    changed from 0.01 to 0.001.
  * Parameter change: bisectolshift (tolerance of shift to stop bisection
    method): default value changed from 0.1 to 0.001.
  * Parameter change: bisectolwidth (tolerance of width to stop bisection
    method): default value changed from 0.2 to 0.001.

- ahmktim
  * Bug-fix: Corrected a double-free failure which sometimes occured when
    task was built with gcc 5.4 with optimization.

- ahnxbgen
  * Bug-fix: Incorrect Perl function call get_column_number() has been
    corrected to get_column_num().
  * Bug-fix: One case-sensitive test of regmode parameter is now case-
    insensitive.

- ahsxtarfgen
  * Behavior change: Writes PSF fraction inside detector area and/or
    inside region to the screen.
  * New parameter: auxtransfile:  Auxiliary transmission file, containing
    transmission as a function of energy to be applied to final ARF.
  * Parameter change: skyregfile:  Wording of the parameter prompt was
    changed to make clear that this region file is in world coordinates
    (RADEC), not Cartesian SKY coordinates.
  * Bug-fix: In applying the contamination CALDB file, now reinitializes
    the sum of weights and weighted sum to zero for each fine energy bin.
    Previously, this reinitialization was not done, so that incorrect
    transmission values for contamination were used in the ARF.

- hxirspeffimg
  * Parameter change: auxtransfile:  If set to CALDB, a CALDB query is
    done.  Previously, the string CALDB was not detected and was treated
    as a normal filename.

- sxsnxbgen
  * New parameter: picol:  Name of PI column to read from input event file.


HXI/SGD Applications:

- sgdarfgen
  * Behavior change: Checks SGDID parameter vs. INSTRUME keyword in input
    file, and includes SGDID as part of output file name.

- sgdevtid
  * Behavior change: Uses underscore instead of blank in fluorescence
    material names; e.g., 'CdTe btm' is now 'CdTe_btm'.
  * Bug-fix: Throws error if the program attempts to find a fluorescence
    line for a material that is absent from the CALDB file.  Previously,
    such fluorescence lines were silently omitted in event reconstruction.


SXI Applications:

- sxiflagpix
  * Bug-fix: Program was segfaulting when the parameter echoflag was
    'no' and the parameter echomap was 'yes'.  This bug was corrected
    by ignoring echomap when echoflag is 'no'.

- sxipi
  * Bug-fix: Some CALDB files can have blocks of lines with the same
    timestamp.  Previously, CALDB files containing more than one such
    block were being read incorrectly.  The bug was fixed by correcting
    the flow of control in nested loops that process each group of equal
    times within each file.


SXS Applications: 

- sxsextend
  * NEW TOOL: Reruns tasks sxspha2pi, sxsperseus (if necessary), and
    ahscreen in order to produce SXS event files in extended energy mode.  `

- sxsanticolc
  * Behavior change: Sets TUNIT keywords for output RATE and ERROR columns.
    Previously, these keywords were omitted.

- sxsflagpix
  * Behavior change: If MXS GTI times do not overlap with the time range
    of the input file.  prints log message and skips MXS flagging.
    Previously in this case, the task threw an error.

- sxsgain
  * Parameter change: r2tol (convergence criterion for R^2): default value
    changed from 0.01 to 0.001.
  * Parameter change: bisectolshift (tolerance of shift to stop bisection
    method): default value changed from 0.1 to 0.001.
  * Parameter change: bisectolwidth (tolerance of width to stop bisection
    method): default value changed from 0.2 to 0.001.
  * Behavior change: Instead of using theoretical average when determining
    the temperature from the fitted shift, now uses the tabulated profile
    average.

- sxsperseus
  * Behavior change:  For extended energy mode, reads columns EPIE and
    EPI2E rather than EPI and EPI2, and writes columns EPIEPER and
    EPI2EPER rather than EPIPER and EPI2PER.
  * Bug-fix: Now checks whether PI or PIE column already exists before
    inserting it into the output file.
  * Parameter change:  binwidth (PI bin width for extended energy range):
    Default value changed from 0.5 eV to 1.0 eV.

- sxspha2pi
  * Behavior change: In extended energy mode, automatically adds "E" to
    column name in ADDEPICOL parameter to form the name of the output
    column for energy with secondary correction.
  * Behavior change: Now writes PIOFFST and PIWIDTH keywords (PI energy
    offset and bin width) in non-extended-energy mode.  (Similar keywords
    PIEOFFST and PIEWIDTH were already written for extended energy mode.)
  * Bug-fix: Skips events with PIXEL=NULL to guard against a segfault. 
    Normally, this condition is never encountered because the PROC_STATUS
    column should indicate a bad event, but PROC_STATUS has not been
    updated in teh pre-pipeline for this condition.

- sxspixgti
  * Behavior change: Updates timing keywords if upkeyword=yes (upkeyword
    is also passed to the called task ahgtigen, as before).

- sxsregext
  * New parameter: extended (boolean):  extended=yes causes the PIE column
    to be read from the event file rather than the PI column.
  * Behavior change:  Substitutes USER=sxsregext for USER=[user name] in
    output header to facilitate unit testing.
  * Parameter change:  regmode: WCS coordinates for the regionfile are now
    indicated by regmode=RADEC rather than regmode=SKY.


Libraries:
  
- ahgain
  * Bug-fix: Memory leak eliminated in deallocation of fit results structure.

- rmflib
  * Behavior change: CHANNEL column in EBOUNDS RMF extension changed from I type to J.

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS v1.7.0 software patch:

- nucalcsaa: Adjust the behavior of nucalcsaa so that fselect is no
  longer run even when saamode='NONE' & tentacle=no. This resolves
  the known issues where nupipeline was crashing when the 01 and 02
  event files were empty (mostly when looking at the Sun).

- nupipeline: (1) nupipeline now selects an appropriate TLE file
  from the auxil directory instead of simply exiting with an error
  message.  (2) Corrected a bug in the input parser that occurred
  when parameter 'statusexpr' was not set to 'DEFAULT'.

- nuscreen: Correction of a bug when input parameter 'statusexpr'
  is not set to DEFAULT.

NuSTARDAS v1.7.1 software patch:

- nufilter: added the parameter 'timeadj=DEFAULT when running the
  multi-mission FTOOL prefilter.

********************************************************************************
                                     SWIFT
********************************************************************************

XRTDAS Build 33:

- xrtpipeline: Disabled the option to call the xrttam module (removal
  of the input parameters  applytamcorr, tamfile, tamrefx1, tamrefy1,
  tamrefx2, tamrefy2, attcorrout)

- xrtwtcorr: Bug fixed in the bias adjustment calculation.

- xrtscreen: Fixed some keywords duplication in output GTI files.

- xrtfilter: Modified the call to the multi-mission FTOOL prefilter.

- xrtgrblc: Update of the clean-up of temporary files.

- xrtgrblcspec: Adjust some output formatting to mimic behavior prior to
  a recent increase in output precision from Xspec.

********************************************************************************
                                    XTE
********************************************************************************

- GUIs xdf and xsut have been relocated to live with the rest of the XTE
  software instead of the "FV/GUIs" package.

********************************************************************************
                                    MISC.
********************************************************************************

- tai-utc.dat, leapsec.fits: Added 2017-01-01 leap second.

- PLT: Fix for problem in contour plot when the label to set the cross
  can fail if the first position given is of the form #e... where #
  is a single integer. The issue arises because GTPEEK returns only
  the first two characters of the token while ISNUM checks for a
  token being a number by testing that the first and last characters
  are integers. There are a number of other places that GTPEEK is
  followed by ISNUM so these could generate similar problems. It
  would be better to have a complete solution to these however the
  obvious fix of changing GTPEEK to return the entire token causes
  a failure when using text surrounded by double quotes.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.22
                                August 15, 2017
********************************************************************************

The HEASoft 6.22 release is driven by updates to several mission-specific
software packages (NICER, Hitomi, NuSTAR, Swift, XTE), but also includes
updates to other packages which have been revised to mirror the current
development versions in use at the HEASARC.

As before, configuration-related changes thoughout the package mean that
users who already have HEASoft v6.x.x installed will need to completely
replace their software installation; there is no clean way to simply
overlay this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Updates to version 3.42:
                   
- Added HTTPS support to the collection of drivers handled in cfileio.c
  and drvrnet.c.  This also handles the case where HTTP transfers are 
  rerouted to HTTPS.  Note that this enhancement introduces a dependency
  on the libcurl development package.  If this package is absent, CFITSIO
  will still build but will not have HTTPS capability.
                   
- Made fix to imcomp_init_table function in imcompress.c.  It now writes
  ZSIMPLE keyword only to a compressed image that will be placed in the
  primary header.
     
- Fix made to fits_get_col_display_width for case of a vector column
  of strings. 

********************************************************************************
                                      FV
********************************************************************************

- Fixed abort under Apple XCode 8.3.x with update to use Tcl/Tk 8.6.6.

- Fixed bug in which the original file was mistakenly updated after a
  'Save As' copy was made.

********************************************************************************
                                     HEASP
********************************************************************************

- Changed definition in heasp.h of Real from float to double for
  consistency with xspec.
  
- Modified grouping class to make Flag be 1 for start and -1 for
  continuation of a bin for consistency with the OGIP standard.
  
- Added option to pha class to group by signal-to-noise.
  
- Modified table class read to have the option of not loading all the
  tabulated spectra at the same time. Added a new method to then load
  spectra for a list of index positions. Added a method to return the
  interpolated spectrum on the tabulated energy bins for an input set
  of parameter values.

********************************************************************************
                                   ATTITUDE
********************************************************************************

- prefilter: Update to v3.4: add orbmode=XTE which allows XTE-style orbit
  as input (also Chandra & NICER).  Add attfile=QUAT(x,x,x,x) which allows
  static attitude quaternion to be entered instead of an attitude file.
  Fix bug in handling of Z position vector.  Fix bug converting to kilometers
  that prefilter wants.  Add timing tolerance for orbit extrapolation, between
  large gaps that still bracket the desired point.  Add TDISPn output to
  prefilter FITS file for better visibility.

********************************************************************************
                                   CALTOOLS
********************************************************************************

- quzcif: Added hidden 'quality' parameter so users can search for CALDB
  files where quality is not 0.  This is useful for seeing the number of 
  "bad" files in a CIF, or for setting a non-zero quality to use if a
  calibration file that would normally be avoided may be appropriate
  in certain circumstances.

********************************************************************************
                                    FUTILS
********************************************************************************

- finterp: Fix interpolation of multiple columns.

********************************************************************************
                                    HEAGEN
********************************************************************************

- barycorr: Major rewrite to version 2.0:

  Changes to the internal C code of barycorr to properly handle multiple
  orbit files and orbit files with gaps.  Reduce the amount of extraneous
  checking by the perl wrapper script. Unit tests still pass to within 500
  nanoseconds.

  The orbit interpolation algorithm is slightly revised to a true cube spline
  interpolation, but should be improved over the one originally used.  In
  practice this new algorithm causes <100 nsec differences from the previous
  one, which is negligible.

  Missions should decide how much or little interpolation/extrapolation is
  required.  The search functions have separate tolerances for both
  interpolation and extrapolation.  In practice, RXTE and Chandra do not allow
  extrapolation; Swift and NuSTAR allow up to 2 seconds of extrapolation.

  All missions: If CLOCKAPP exists, it is set to true upon successful return
  of the task.

  Add new ephem parameter to either choose a JPL planetary ephemeris file
  name, or DEFAULT to choose based on the reference frame.

  Update for NICER files. 

  Swift: v2.0 correctly updates the DATE-OBS and DATE-END keywords.  This
  is a change from previous behavior where the perl wrapper updated TSTART
  and TSTOP but not the DATE-* keywords.  The task no longer creates a
  RAWTIME column.  This column was not meant to be useful for scientists,
  but was used in the internal calculations of the task.  v2.0 has improved
  behavior around UTC leap second rollover boundaries.  Previously there
  could be several 10s of seconds of error around the new year.  With the
  new version, this problem area is reduced to a ~1 second window where
  errors could occur.

  Apply barycenter correction to a column named 'ENDTIME' for Swift XRT
  hk data.  This is required to handle XRT light curves obtained from
  barycenter-corrected event files when running `xrtlccorr' to account
  for time-dependent PSF/EXPOSURE losses.

  v2.0 no longer assumes that the current directory is writable.

  Fix bug in double-counting TIMEZERO, which shows up in output of
  extractor light curves.

- barycen: Reports error from getPar function using C printf rather than
  writing output to log, which is not yet initialized at that point.

- xrtraytrace: Fixed memory leaks to address segfault that occurred only
  for the option source=PHOTONLIST, under Mac OSX with Xcode 8.3.x.

- VOtable2xsp: Changed all filename parameters to be *file, not *fil.

********************************************************************************
                                    HEASARC
********************************************************************************

- extractor: Fixed errors when reading and writing multiple event
  files with different column ordering which contain A and/or X
  format columns.  This serendipitously appears to also fix a
  memory fault from the same bug report.

********************************************************************************
                                    HEASIM
********************************************************************************

- Bug-fix: No longer segfaults by attempting to free an unallocated
  instrument map array, when SKIPFOV=YES.

- Behavior change: When the XSPEC library is used for a single
  Gaussian line spectral component, the sigma is set explicitly to
  1e-6 keV instead of accepting the library internal default.

********************************************************************************
                                   HEATOOLS
********************************************************************************

- ftlist: Fix ftlist output for case of vector columns.  Fix incomplete
  output for files with "+0" in their name.

- ftmgtime (NEW TASK): Merge two or more GTI FITS files.  Improves upon
  the older task "mgtime" in several ways; run "fhelp ftmgtime" for more
  information.

********************************************************************************
                                    XSELECT
********************************************************************************

- xselect.mdb: Changed NICER instrument name to XTI and default spectrum
  column to PI.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.22 includes Xspec v12.9.1m. See the Xspec issues page for
more information:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

********************************************************************************
                                     XSTAR
********************************************************************************

- New version 2.41:

  Fix to type 70 calculation (recombination to pseudo-levels) for He-like
  ions which partially smooths the density-dependent behavior near density
  of 10$^{10}$ cm$^{-3}$, by using quadratic interpolation rather than linear.

  Fix which passes real*4 variable to FITSIO routine in fstepr4.

  Increase size of temporary array in routine reading atomic database.

  Update to treatment of dielectronic satellite emission in calt72.

  Remove arrays called vsav, rates, and idrates which contained temporary
  saved rates in order to save memory space.

  Increase value of crit and crit2 in msolvelucy from 1.e-10 to 1.e-4.

  Add data type 96, safranova satellite emission for Fe XXIV.

  Changes to atomic database: update to Fe XXIV DR satellite emission using
  rates from Bautista et al. 2003; fix to the Fe XXV forbidden line (2 photon)
  decay; addition of direct excitation of Fe XXIV satellites using rates from
  atomdb; also direct excitation of Fe XXV lines using rates from atomdb.

********************************************************************************
                                    HITOMI
********************************************************************************

Hitomi Version 006 (2017 April)

Major changes introduced in this version:

Mission Applications:

- aharfgen: 

  * Behavior change:  Processing of heasim photon list now uses
    ftools rather than Perl code.

  * Bug-fix:  For sourcetype=IMAGE, corrected a formula involved
    in converting simulated event coordinates to RA and Dec.  The
    error was affecting the effective area of off-axis positions
    at high Declination.  Only IMAGE mode was affected.

- ahgainfit:

  * Bug-fix: Error bands for 'width' and 'shift' computed using
    the criterion delta chi^2 = 1 were erroneous for cases with
    poor fits.  Fixed by adding a subscript bounds check to loops
    that search arrays of chi^2 values.

- ahnxbgen:

  * Behavior change:  Intermediate file extractspback.pha is now
    deleted if CLEANUP=YES.

- ahsxtarfgen:

  * Bug-fix:  PSF fraction computation corrected.

HXI/SGD Applications

- hxievtid:

  * Bug-fix: Now stores correct value of TLMAX for FOCX, FOCY, X,
    and Y coordinate columns (Note: these values were always correct
    in any case after running task coordevt.)

SXS Applications

- sxsbranch:

  * Bug-fix: Crosstalk event counting for flight data files corrected.
  * Behavior changed: Now outputs branching ratio per pixel rather
    than exposure time per pixel.
  * New parameter: TSTART.  
  * Deleted parameters: RTMAX and DMMIN.

- sxsextend:

  * Bug-fix: Now uses EPIPER and EPI2PER columns for input instead of
    EPI/EPI2 when running in fast mode on a sequence requiring the
    Perseus correction.

* Libraries:

- ahfits:

  * Behavior change: Default TUNIT, TLMIN, etc. keyword comments have
    been changed to match the Astro-H SCT FITS document standards.
  * Bug-fix: In writeKeyVal* functions, if an empty string is given as
    the comment, the existing comment is now retained.  This change
    prevents accidental deletion of the comment field of NAXIS2 when
    the number of rows in a binary table is updated.
  * Behavior change: Added comment argument to the set functions for
    TNULL, TDISP, etc.
  * Behavior change: Keywords set by writeImage() now have comments.

********************************************************************************
                                     NICER
********************************************************************************

NICER DAS Version 1.0 (new tasks):

- nicercal: Apply standard calibration to NICER observation

- nicerpi: Apply gain calibration to NICER event file (calculate Energy/PI)

- niextract-events: Fast event filtering, similar to extractor

- nimaketime: Create standard NICER screening GTI

- nimpucal: Apply standard NICER calibration to MPU data

- nimpumerge: Merge NICER event data from multiple MPUs (or observations)

- niprefilter: Create NICER-specific filter file

- nicerversion: Report NICER software version

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS v1.8.0 software patch:

Note that the CALDB patch 20170727 is required when using the new 'saacalc=3' mode.

- nucalcsaa:

  Add new 'saacalc=3' operation mode.  This accounts for the changes in the
  internal background related to the evolution of the South Atlantic Anomaly
  (SAA) throughout the solar cycle. This improves on the 'saacalc=2', though
  users should check the background filtering reports provided by the NuSTAR
  SOC (http://www.nustar.caltech.edu/page/background) when deciding which
  filter parameters to use.

  Improve handling of input cleaned event files.  This patch adjusts the
  behavior of nucalcsaa so that the fselect FTOOL is no longer run if the
  SHIELD column is not present in the cleaned event file. The SHIELD column
  is truncated when the 'cleancols=no' keyword is used by nupipeline, which
  is the default case.

- nuexpomap:

  Improve the evaluation method for calculating the time-averaged optical
  axis location. Before the change, the brightest point on the vignetting-
  corrected exposure map could be off from the time-averaged optical axis
  position by up to 10". This has been fixed and the two locations will
  now correspond to each other. This change affects only the vignetting
  corrected exposure map, which is used in the light curve generation.
  It has no impact on the ARF and RMF generation.

- nuscreen:

  Suppress warning messages that occur when a particular event mode does
  not contain any exposure time and therefore its associated cleaned event
  file is not generated. This commonly occurs for several of the available
  data modes (i.e., calibration source data, slew data, and/or data
  obtained during the SAA passages).

- numkarf:

  Improve effective area calculation for the extended sources in the
  'flatflag=yes' case.  In the 'flat' ARF case, where the effective area
  is not weighted by the observed count rate, the effective areas were
  before evaluated with the same weight in each box that covered the
  extraction region, regardless of how much area of each box was actually
  contained in the extraction region. This was particularly sensitive to
  gaps between the CZT detectors that were inside the boxes but outside
  the extraction region. To obtain a more accurate effective area, we
  now weigh the effective areas with the covering region of each box.
  This change only influences the 'flatflag=yes' case.

- nupipeline:

  Now supports the keywords for the handling of the new case 'saacalc=3'
  of the module nucalcsaa.

********************************************************************************
                                     SWIFT
********************************************************************************

GEN:

- swifttime & swtimecorr: Allow https prefix for clock file.

BAT:

- Error checking for http now includes https too.

UVOT:

- uvotimage: Raw UVOT images have the left-most 8 unbinned columns wrapped
  from the right side.  Zeroed them out to prevent unintended consequences
  due to counts in the wrong position.

- uvotinteg: Fix length argument of strncpy; was causing run-time failures
  when built with Apple XCode 8.3.x.

- uvotproduct: Add support for ds9 v.7.

XRT (XRTDAS 3.4.0):

- xrtfilter: Add internal run of 'finterp' to extrapolate the values
  of the STAST_LOSSFCN/SAC_MODESTAT columns of the filter file.
  
- xrtpipeline: Add new input parameter 'mkfextrapolate' used for the
  xrtfilter run.

********************************************************************************
                                      XTE
********************************************************************************

- correctlc: Fix abort for method=max case: change size of pcuchar from
  [1] to [2] to prevent abort in the sprintf of pculist[i] into pcuchar[0],
  and set trailing pcuchar[1] to 0. Also, initialize pculist for the case
  where it isn't queried.

- hxtdead: Version 3.0.0: Major rewrite to take out artificial limits
  (there was a limit of 8192 x 16 sec samples, or 1.57 days); records
  are now a structure which are easier to (re)allocate; error checking
  to prevent out of bounds memory accesses; address most compiler
  warnings; tested against 400 spectra of XTE J1751-305 (obsid 70131)
  and all were identical.

- pcabackest: Bug fixes: write more compliant TDISP values for background
  estimates (F8.2 instead of E5); off-by-one bug in string manipulation;
  initialization bug.  Add the 'modelfamily' parameter which helps the
  task find the right CALDB file; sensible defaults are applied; use the
  PCABGFAM keyword in the model file to actually say what family it is,
  and write that keyword to the output.

- pcadeadcalc1: Improve the compliance of output keywords; remove output
  columns LiveTimeVect and OnTimeVect which are not used downstream and
  are difficult to format properly.

- pcadeadcalc2: Improve compliance of output keywords.  Calculate
  L7CntPcuN column so L7 is available.

- pcaextspect2: Handle user-specified RA/Dec more robustly; fix bug in
  writing BACKFILE with path components; write RESPFILE, with no path
  components.  Warn when XPCAARF emits a cryptic error message: it's
  really because the analyst entered a bad target position.  Added
  'respdate' parameter; default is to use the centroid-weighted
  centroid time; set HDUCLAS2=BKG in output background spectrum;
  fixed typos in computing centroid time.

- pcamergeobsids: Add support for Standard1 files via pcaprepfile1,
  both preparing and merging.  More careful checking/display of target
  positions; target positions are computed and compared and outliers
  are flagged; make missing Standard1 files non-fatal. Ensured that
  merged observations are merged in time-order.

- pcaprepfile1, pcaextlc1: New tasks for preparing Standard1 files and
  making standard light curves from them.

- pcaprepobsid: Add support for Standard1 files via pcaprepfile1,
  both preparing and merging.  More careful checking/display of target
  position.  Handle user-specified RA/DEC by writing {RA,DEC}_{OBJ,PNT}
  into the output dead-time and background files; warn if datamodes
  does not include Standard2; version 1.2.

********************************************************************************
                                      MISC
********************************************************************************

- wcslib: Update to version 5.16.
  http://www.atnf.csiro.au/people/mcalabre/WCS/
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.25
                                October 22, 2018
********************************************************************************

The HEASoft 6.25 release is primarily driven by updates to the NICER
data analysis software, but also includes other enhancements and fixes.

As before, configuration-related changes thoughout the package mean that
users who already have HEASoft installed will need to completely replace
their software installation; there is no clean way to simply overlay
this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Version 3.46 - October 2018

- Added wildcard deletion syntax for columns, i.e. -COLNAM* will delete
  the first matching column as always; -COLNAM*+ will delete all matching
  columns (or none); exact symmetry with the keyword deletion syntax.

- Improved the algorithm for ensuring no tile dimensions are smaller 
  than 4 pixels for HCOMPRESS compression.
                   
- Added new functions intended to assist in diagnosing (primarily 
  https) download issues: fits_show_download_progress,
  fits_get_timeout, fits_set_timeout.

- Added the '-O <file>' option to fpack, which previously existed only
  for funpack.  Also added fpack/funpack auto-removal of .bz2 suffix 
  equivalent to what existed for .gz.

- For the fpack '-table' cases, warning message is now sent to stderr 
  instead of stdout.  This is to allow users to pipe the results from
  stdout in valid FITS format.  (The warning message is otherwise placed
  at the start of the FITS file and therefore corrupts it.)

- Fix made to the '-P' file prefix option in funpack.

Version 3.45 - May 2018
                   
- New support for reading and writing unsigned long long datatypes.
  This includes 'implicit datatype conversion' between the unsigned long
  long datatype and all the other datatypes.
  
- Increased the hardcoded NMAXFILES setting for maximum number of
  open files from 1000 to 10000.
                 
- Fixed a parsing bug for image subsection and column binning range
  specifiers that was introduced in v3.44.

********************************************************************************
                                    CCFITS
********************************************************************************

- Enabled support of long string keywords (which use the CONTINUE key)

- Replaced all uses of std::auto_ptr with std::unique_ptr.  This is made
  in tandem with configuration changes which add a C++11 compiler flag
  when necessary.

- Added capability for user to specify keyword categories to read/copy. 
  Removed TYP_WCS_KEY,TYP_CMPRS_KEY from s_iKeywordCategories, as they
  are file-specific keywords.

- Bug fix to writeHistory and writeComment functions: when copying via
  the get/write functions, mult-line input was not properly formatted
  upon output.

********************************************************************************
                                    ATTITUDE
********************************************************************************

- prefilter: Avoid invalid memory access

********************************************************************************
                                    CALTOOLS
********************************************************************************

- quzcif: Added https support with retrieve=yes.  Added optional download
  progress bar display when retrieve=yes and chatter > 10

********************************************************************************
                                     FIMAGE
********************************************************************************

- chimgtyp: Reworked prompt for output datatype parameter; this prevents an
  infinite loop which occurred when the datatype was invalid or incorrectly
  entered.

********************************************************************************
                                     HEAGEN
********************************************************************************

- Replaced some tasks with wrappers to their new counterparts in the
  heasptools component:  

  old heagen task:    wraps to heasptools task:

    flx2tab        ->   ftflx2tab
    flx2xsp        ->   ftflx2xsp
    mkfiltrsp      ->   ftmkfiltrsp
    rgsrmfsmooth   ->   ftrgsrmfsmooth
    rsp2rmfarf     ->   ftrsp2rmfarf
    sdss2xsp       ->   ftsdss2xsp
    sprbnarf       ->   ftrbnarf

- barycorr: Fixed bug in handling GTI extensions that are not exactly
  named 'GTI'; allow orbitfiles=GEOCENTER for geocenter-to-barycenter
  only correction

- ftadjustgti [NEW]: Perform filtering and normalization of good time
  interval (GTI)

- xrtraytrace: Fixed bug that failed to detect an input energy value mismatch
  with all energies in the array of multilayer reflectivity file energies
  when the input energy list contained a valid energy immediately following
  an invalid energy. The effect of the bug was to calculate the wrong
  reflectivity value for all the input energy values that did not have a
  counterpart in the reflectivity file.

- xrtreftable: Corrected some sign errors in relectivity and transmission
  calculations. The use of the function cxpower for the square root of a
  complex number was replaced by the intrinsic C++ square root function.
  These corrections have no net effect on the reflectivity or transmission
  because they exactly cancel each other out.

********************************************************************************
                                    HEASARC
********************************************************************************

- extractor: Speed up in the case of a very large number of gti bins by
  fixing calcbinsize so that it does not have to start at the first gti
  every time.

********************************************************************************
                                     HEASP
********************************************************************************

HEASP is updated to v2 which involves significant internal changes:

- All internal class members are now private and are accessed using
  get and set routines. For example in pha the member m_FirstChannel is
  set using setFirstChannel(value) and got using getFirstChannel().
  For members which are vectors individual elements can be got and
  set using for example getPhaElement(i) and setPhaElement(i,value).

- The Python module now uses numpy arrays for C++ vector
  quantities. For example the Pha vector in pha can be set using
  setPha(array([0.1,0.2,0.3,0.4,0.5]))

- Modified all methods for consistent use of const on input variables
  and made methods themselves const if the object is not modified.

- Added more load methods and constructors.

- Removed members which store OGIP version numbers since it made no
  sense to store these in classes.

- Added writeChecksum() functions when writing extensions

- Modified table::getValues to report to the SP error stack if a
  requested parameter value is outside the tabulated values

- Removed copying of other keywords and extensions since these are not
  operations from classes as these are not operations on the class.

- Improved error reporting on methods which call checkCompatibility().

- Added copying of COMMENT and HISTORY keywords to SPcopyKeys.

- Trapped possible seg fault and fixed error setting m_FirstElement
  in rmf::update and fixed error in rmf::interpolateAndMultiply.
  Corrected error in rmf::convertUnits when converting from wavelength
  units. Fixed potential seg fault in rmf::estimatedFWHM when the
  response maximum is in the first or last channel.

- Fixed bug in arf::rebin which was causing the arf to be summed
  instead of averaged in the rebinning process.

********************************************************************************
                                     HEASIM
********************************************************************************

- skyback: Fixed subscript order in maps; fixed bugs in using degree-pixel
  sky maps.  Updated FITS headers with full description in comments.

********************************************************************************
                                   HEASPTOOLS
********************************************************************************

- ftaddarf: Fixed bug which caused a zero length arf to be written

- ftdmprmf: Fixed so that it doesn't also write to the terminal when
  an output file is set

- ftflx2tab: Fixed bug which caused REDSHIFT keyword to always be set to F

- ftflx2xsp: Fixed memory error on channel vector and incorrect setting of detchans.

- ftgenrsp: Fixed typo causing seg fault when reading a resolution file;
  Improved reading of input files and fixed error in calculating response
  when setting the norm vector; Fixed bug in setting channel and energy
  bins when using their respective break parameters

- ftrbnarf: Fixed prompting for binfact parameter

- ftrbnpha: Corrected errors in reading parameters and in calculating
  binning factors for the FAINT2BRIGHT and BRIGHT2LINEAR methods

- ftrbnrmf: Minor efficiency improvement trapping cases when channel or
  energy binning is linear with unit binning factor

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftcalc: Added 'coldesc' parameter to allow specifying description of a
  new column; default value coldesc=INDEF will preserve existing function.

- ftleapsec [NEW]: Calculate number of leap seconds at requested epoch

- ftlist: Fixed bug for case of reading 0-length variable-width bit
  columns (type -TBIT). Fixed bug for case of variable-length string
  columns (-TSTRING) in which the number of elements was incorrectly
  calculated (can only be 0 or 1).

- ftsort: Allow sorting of 0-row input (produces 0-row output).

- ftsort + ftmergesort: Fixed compatibility with tables with variable-
  length columns: ftsort and ftmergesort cannot copy a subset of a table
  with variable-length columns (i.e. they can only copy the entire table).

********************************************************************************
                                     TIME
********************************************************************************

- maketime:

  Added parameters 'premax' and 'postmax' to allow finer control over how
  files with large gaps are dealt with; premax=-1, postmax=-1 is the default
  and recovers previous behavior for backwards compatibility

  Added parameters 'mingti' and 'emptygti' to allow more fine-grained
  control over GTI creation; defaults maintain existing expected behavior;
  output can now be piped to STDOUT

  Added parameter 'extname', which defaults to STDGTI for compatibility
  with previous versions; added descriptions to START and STOP columns

********************************************************************************
                                     XIMAGE
********************************************************************************

- Fixed random aborts when setting log file option on the command line

- Addressed Tcl "::unknown " messages in batch (.xco) processing

- skyview: Fixed to handle https addressing

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.25 includes Xspec 12.10.1.

- New models:
  
  - zbknpower
  - zlogpar
  - agnsed
  - qsosed
  - (v)cph    (note this included change to calcCoolingFlow function)
  - relline, relline_lp, relline_lp_ext
  - relconv, relconv_lp, relconv_lp_ext
  
- Modifications to models:
  
  - Added an xset LINECRITLEVEL option for crtLevel for
    gaussian/lorentzian/voigt lines. If set this overrides
    the coded values.
  
  - Modified diskline, rdblur, kdblur, kdblur2, laor, laor2, kerrconv,
    kerrdisk for high resolution spectroscopy.
  
  - Added tabint C/Fortran wrapper for tableInterpolate.
  
  - Added statistic cstatbN option.

- PyXspec:

  - It is now possible to call XSPEC's model functions directly from
    PyXspec using the new function xspec.callModelFunction().  This
    utility is particularly useful for users who wish to access
    particular XSPEC model functions within their own local model
    Python code.

  - Some XSPEC model parameter names contained parentheses, which
    were incompatible when used in PyXspec.  Therefore parentheses
    have been replaced with a single underscore.

See also:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

********************************************************************************
                                     XSTAR
********************************************************************************

Xstar v2.53:

Changes since 2.5:

- Implementation of lpri=-1 for very streamlined output; change to
  xstinitable.par to allow for larger model grids

- Minor changes to print switches and more accurate criterion for
  determining which lines are included in spectrum synthesis.

- Numerous Fortran syntactical changes

- Improved precision tests for which lines to include in emission
  spectral calculation (binemis)
  
- Added emissivities to quantities output to file xo01_detal4.fits

********************************************************************************
                                     EXOSAT
********************************************************************************

- exovig: Fixed "exovigrun: command not found" error

********************************************************************************
                                     MAXI
********************************************************************************

- New package of analysis tasks for the MAXI mission:

  mxextract - Extract source event from multiple HEALPix event files.
  mxgrmfgen - Generate the response matrix file for GSC instrument.
  mxgscandat - Calculate the time to when a source is in each of the
    GSC FOV detectors.
  mxgtiwmap - Calculate a weighted spatial distribution of events on
    the detector.
  mxlscan - Calculate a source lightcurve.
  mxproduct - Generate the high level products (images lightcurves spectra
    and response) for both instruments.
  mxscancur - Determine the source position relative to the GSC or SSC
    instrument.
  mxsrmfgen - Generate the response matrix file for SSC instrument.
  mxsscandat - Calculate the time to when a source is in SSC instrument FOV.
  mxdownload_wget - Search and retrieve the archived MAXI data for a given
    sky position and time interval
  mxversion - Print the MAXI software package version

********************************************************************************
                                     NICER
********************************************************************************

NICERDAS Version 5.0:

- nicerl2, nicercal, nicertimecal, nimpucal: Added leapinit option to
  calculate leap seconds

- nicertimecal: Allow 0-row input files; Fixed bug when running non-
  CALDB (wasn't querying leap seconds properly)

- nicertimeconv [NEW]: Basic time conversion for NICER time values

- nicerpi: Allow 0-row input files; Added new functions for NICER gain
  calibration; added energycol output to get ENERGY column in output
  if desired; allow PHA input to be float instead of int; change trend
  stuff to MV_TREND instead of FT_TREND

- nimaketime: Updated maketime call to handle new {pre,post}max and
  emptygti options

- nimpucal: Improved memory efficiency when calculating PI_RATIO

- niprefilter: Added column defaults when an APID file is missing;
  added robofile support

- niextract-events: Fixed timefile=@name.lis bug; added history
  task parameter

********************************************************************************
                                     NUSTAR
********************************************************************************

- Improved handling of remote CALDB and file i/o diagnostic output.

********************************************************************************
                                     SUZAKU
********************************************************************************

- xisrmfgen: Change to model the Si-K edge when calculating the response
  function. The software includes new parameters (xi[0/1/2/3]_jmp_loene,
  xi[0/1/2/3]_jmp_hiene, jnct_hiene, s1_factor) used in the model. This
  software change requires the new CALDB version 20181010.

********************************************************************************
                                     SWIFT
********************************************************************************

- uvotmaghist: Allow ignoring uvotsource errors; this sounds odd but is
  allowed for the case where some UVOT images do not include the regions
  of interest. Activate by setting the UVOTMAGHIST_IGNORE_UVOTSOURCE_ERRORS
  environment variable to 1.

- XRTDAS: Improved handling of remote CALDB and file i/o diagnostic output.

********************************************************************************
                                      MISC
********************************************************************************

- PGPLOT: Added Jonathan Irwin's SVG driver

- READLINE: Updated to v7.0 + current patches

- WCSLIB: Updated to v5.19.1
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.26
                                   May 17, 2019
********************************************************************************

The HEASoft 6.26 release is driven by several updates to mission-specific
data analysis software (MAXI, NICER, et al.), but includes many other
enhancements and fixes, including updates to most legacy software which
fix run-time memory issues under newer Debian-based Linux OS (i.e. Ubuntu
18.10 and 19.04).

As before, configuration-related changes throughout the package mean that
users who already have HEASoft installed will need to completely replace
their software installation; there is no clean way to simply overlay
this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

- Added set of drivers for performing ftps file transfers.

- Tile sizes for compression may now be specified for any pair of
  axes, where previously 2D tiles where limited to just X and y.
  
- Fix to ffgsky and ffgkls functions for case of keyword with long
  string values where the final CONTINUE statement ended with '&'.
  If the final CONTINUE also contained a comment, it was being 
  repeated twice when passed back through the 'comm' argument.

- Fix made to ffedit_columns() for case of multiple col filters
  containing wildcards.  Only the first filter was being searched.

- fits_copy_rows (ffcprw) can now handle 'P'-type variable-length columns.
  
- Fix made to an obscure case in fits_modify_vector_len, where a 
  wrongly issued EOF error may occur.

- Added internal fffvcl() function.

- Fixed bug in new 0-or-more wildcard pattern matching; one is to handle
  the match like -#COMMENT+ which doesn't have a wildcard, but still needs
  to match 0-or-more; a second is a 'bug' dealing with how CFITSIO scans
  for keywords with and without wildcards and whether the 'current' header
  position is reset or not.

********************************************************************************
                                    ATTITUDE
********************************************************************************

- prefilter: Replaced call to obsolete atRigidity (float) with
  atRigidityD (double), and excised call to initialize_asca_derive_cor
  which was just a wrapper to the obsolete function atRigSet.

- aspect: Initialized local variables

********************************************************************************
                                    CALTOOLS
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  addarf, addrmf, cmppha, cmprmf, col2img, dmprmf, marfrmf,
  rbnrpsf, rpsf2eef, rpsfqdp, st2rpsf

- Replaced older tools with Perl wrappers to their newer counterparts in
  the heasptools package:

  gcorpha -> ftgcorpha
  gcorrmf -> ftgcorrmf
  genrsp -> ftgenrsp
  rbnrmf -> ftrbnrmf
  rsp2rmf -> ftconvoldrsp

********************************************************************************
                                     FIMAGE
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  fadapt, fboxcar, fgauss, fim2lst, fimconcat, fimgbin, fimgdmp,
  florentz, fmedian, fvec2img

********************************************************************************
                                     FUTILS
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  fcurve, fplot

- Removed deprecated task 'findex'

********************************************************************************
                                      FV
********************************************************************************

- Fixed random Mac OS crashes of iwidget radio box in menus for Preferences,
  'Export table to text', 'Create new table', 'Create new extension'

- Fixed export to text for image extensions on Mac OS

- Updated scripting capability; added 'closehelp' and 'closetool' options
  to enable closing of help and skyview, catalog, vizier via script

- Fixed exporttable issue and also allow the function to bypass GUI
  interaction via script

- Removed GUI to run ftools

********************************************************************************
                                     HEAGEN
********************************************************************************

- barycorr: (v2.2) Added support for NuSTAR 'fine' clock correction;
  allow clockfile=NONE for all missions

********************************************************************************
                                    HEASARC
********************************************************************************

- nh: Changed the default map to the HI4PI (A&A, 594, A116);
  changed the default parameters size and disio to be optimized to
  the HI4PI map; changed array size and type; added code to trap
  nh negative value, coordinates wrap

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  ascii2pha, extrpsf, fadmap, grppha, hkexpand, mathpha, sf2pha

- rbnpha: Replaced by a wrapper to ftrbnpha (heasptools)

********************************************************************************
                                HEASP / HEASPTOOLS
********************************************************************************

- Changed rmf compression criterion to only include elements with
  values > LO_THRES instead of >= LO_THRES

- Updates to Python module to work for both Python 2 and 3.

- Trapped a potential problem in getValues if maxEindex < minEindex;
  Write EBOUNDS and MATRIX energy columns as D instead of E to avoid
  precision issues with high-resolution optical/UV spectra

- ftsdss2xsp: Fixed check of PLATEID keyword. It is in the primary header,
  not the COADD extension.

- Added wrappers for some old CALTOOLS and HEASARC tasks (see above):
  rbnpha, rbnrmf, gcorpha, gcorrmf, genrsp, rsp2rmf

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftmerge: (v2.3) Flush output table after each input is processed

- ftsort (v1.8), ftmergesort (v2.0): Improved to handle variable-length
  columns

- ftverify: (v4.19) Added option to test that HIERARCH keywords conform
  to the ESO convention

********************************************************************************
                                     TIME
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  deadtime, fltime, mgtime

- maketime: (v2.15) Fixed bug in new premax/postmax code - now correctly
  handles gaps; improved premax/postmax logic for corner cases

********************************************************************************
                                    XRONOS
********************************************************************************

- Note that under newer Debian-based systems (e.g. Ubuntu 18.10 and
  newer), many XRONOS tasks currently suffer memory faults.  These
  are expected to be fixed in a later HEASoft release or patch.

- (libxronos) Fixed attempts to address arrays with 0 index as kmax array
  has not been initialized

********************************************************************************
                                    XSELECT
********************************************************************************

- Fix for 'select hk' command: Needed to specify prefr/postfr parameters to
  maketime to avoid an output message that xselect interpreted as a failure.

- Trapped case of region not being set when one is required to make the response.

- When writing out the observation catalog no longer page but write the whole
  thing out in one go.  Since everyone has scrolling terminal windows paging
  is no longer necessary and the change enables running scripts with large
  observation catalogs.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.26 includes Xspec 12.10.1f.

See also:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

********************************************************************************
                                     XSTAR
********************************************************************************

Xstar v2.54:

- Changes to improve printout of abundances and other input parameters.
  Repair of a bug affecting the output to xout_spect1.fits which mixed
  the incident continuum into the outward-emitted radiation field.

********************************************************************************
                                     ASCA
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  ascaarf, ascaeffmap, cleansis, ghkcurve, sisclean

********************************************************************************
                                     CGRO
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  bcmppha, like, specmat

********************************************************************************
                                     EXOSAT
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  cmadead, exomerge

- automerge: Modified temporary output filenames.

********************************************************************************
                                     MAXI
********************************************************************************

- Updated solar paddles ASCII files used in the task mxscancur

- Updated keywords for ver2 processing

- Update code in libraries to support version 2 of the data 

- mxdownload_wget.pl: Changed to make default for data download to point
  to HEASARC instead of DARTS

- mxproduct: Now handles the leap second file from REFAREA as the first
  choice; includes a more robust check for CALDB; fixes multiple spectra sum

********************************************************************************
                                     NICER
********************************************************************************

NICERDAS Version 6:

- nicerl2: (v1.7) Fixed bug in passing nimaketime parameter with quotes;
  now runs nipprefilter2 to update the filter file

- nicerl2, nimaketime, niprefilter2: Changes to accomodate new parameter
  options of nimaketime and niprefilter

- nicertimeconv: Added nicer_epoch_time() function to relate NICER MET to
  Unix MET

- nimaketime: Changed data screening defaults based on 18 months of operation

********************************************************************************
                                     ROSAT
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  ao, calcbgdcor, detect, hriaspcor, hriexpmap, hrifilt, hrirpsf, mkqsrc, pcarf,
  pcecor, pcexpmap, pcfilt, pcparpha, pcrpsf, pcsasscor, pctcor, src2pha, tilt

********************************************************************************
                                     SWIFT
********************************************************************************

XRTDAS Build 35 (v3.5.0):

- xrtcalcpi: Added dependence on event grade for the energy offset
  correction associated to charge traps

- xrtpipeline: Added new input parameters used for the `xrtwtcorr' run

- xrtwtcorr: Added identification and flagging of trailing charge pixels
  for data taken in Windowed Timing mode

Note that these updates require CALDB updates XRT 20190412 and MIS 20180305

********************************************************************************
                                    VELA5B
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  fvelalc, fvelgallc, fvelmap

- fvelalc: (fvelalc.par) Added default values to maxflux & maxerr parameters

- fvelgallc: Commented out NAXIS=2 error condition trap as NAXIS comes
  up as 0 incorrectly in some rare instances (unless optimization is
  lowered) and is otherwise unused; other FITS characteristics are correct

********************************************************************************
                                     XTE
********************************************************************************

- Replaced udmget/udmfre with allocate/deallocate in the following tasks:

  addshots, addsine, fakelc, hxtarf, pcaclrsp, perdgrm, saextrct,
  seextrct, xpcaarf, xtecol

- pcabackest: (v3.12) Code cleanup including new more mathmatically
  correct interpolation routines which are strictly flux conserving

- Removed deprecated task 'fgabor'

********************************************************************************
                                     MISC.
********************************************************************************

- PGPLOT: Made checking for drivers that use 'vector' fonts more generic;
  Prevent text field overflow when writing PostScript files; modified
  degrees-minutes-seconds labeling code to be more visually consistent;
  old symbols were effectively superscripted twice, which leads to small and
  high symbols; now they are at same level and size as 'd' 'h' 's' symbols

- Updated handling of shared libraries on Linux, i.e. to use rpath and to
  resolve symbols (where possible) at library build time.  Reworked linker
  flags on Macs: synchronized shared library linker flags to all use
  "-undefined dynamic_lookup", adding "-flat_namespace" when using XCode
  clang[++] or (just) for Python libraries when _not_ using XCode clang[++].
  This approach fixes problems loading Python libraries when built with a
  complete (third-party) GCC suite.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.27
                                 March 26, 2020
********************************************************************************

The HEASoft 6.27 release is driven primarily by updates to mission-
specific data analysis software (MAXI, NICER, NuSTAR, Swift, XTE et al.),
but includes many other enhancements and fixes.

As before, configuration-related changes throughout the package mean that
users who already have HEASoft installed will need to completely replace
their software installation; there is no clean way to simply overlay
this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Version 3.48:

- Now can handle parentheses in path names rather than automatically
  interpreting them as output file specifiers.

- Fixed bug in imcompress.c that wasn't properly handling conversion
  between float and double types when reading from a gzip compressed
  float or double image.

- Fixed bug that was preventing use of bracket and parentheses symbols
  in pathnames when opening multiple READWRITE files, even when
  requesting no-extended-syntax usage. *This fix necessitates a
  library interface version number change.

- Fixed bug in ffmnhd / fits_movnam_hdu to properly handle wildcard
  syntax.

- Fixed bug in fits_open_extlist to handle filename[EXT] syntax
  properly.  The hdutype parameter may now be null.  More documentaion
  for this function is in cfitsio.tex.

- Added new function fits_copy_hdutab to create a new table with the same
  structure as an existing table.

- fits_copy_col / ffcpcl handles long long integer data types more
  natively to prevent precision loss.

- histo.c routines now recognize integer columns that have been scaled by
  TSCALn keywords and may be closer to floating point type.

- Added backward compatibility for very old Rice compressed files which
  were not using the ZVAL2 keyword in the way that later became standard.

- Change made to cfitsio.pc.in to prevent forcing downstream libraries
  to link against cfitsio's dependencies when using pkgconfig.

********************************************************************************
                                     CCFITS
********************************************************************************

- Converted all cases of catching std::bad_cast exceptions from
  by-value to by-reference.

********************************************************************************
                                     HEASP
********************************************************************************

General:

   Made arf, pha, and rmf classes a bit more tolerant by allowing
   reading of files where extensions are identified only by HDUCLAS*
   keywords.

   Replaced deprecated auto_ptr by unique_ptr.

   Added SPneedVecCol routine to check whether a column should be vector
   or scalar.

   Changed SPcopyKeys so it only copies keywords that do not already
   exist in the target extension. This prevents overwriting keyword
   values that have been set by the tool calling the routine.

grouping:

   Changed the grouping class to include separate grouping and quality
   vectors instead of combining them in a single flag vector. Made
   corresponding changes to methods.

   Fixed bug which was incorrectly rejecting binning factors of -1 in a
   binning text file.

pha:

   Fixed a bug in convertUnits() which prevented the conversion working
   in the case of input fluxes in ph/cm^2/s/keV

   In rebinChannels set the grouping identically to 0 rather than 1 for
   consistency with the standard since a GROUPING keyword will be
   written.

   Changed setting of output quality to be bad if either any input
   channel making the bin is bad or if phafile grouping is being used
   any channel in the grouping pha is bad.

arf:

   Added handy routines to return the extension numbers of SPECRESP
   extensions in a file and the type of an extension.


arfII:

   Made recognition of arf extensions more flexible in NumberofARFs.

rmf:

   When writing output files change N_GRP and CHANNEL to J format if required.

   Fixed out-of-bounds writes in cases when the F_CHAN and N_CHAN
   vector columns are longer than N_GRP.

   Modified rmf::read so that the EBOUNDS data is first read into a
   separate rmf object so it can test for consistency between MATRIX and
   EBOUNDS keywords such as CHANTYPE and INSTRUME. If inconsistencies are
   found then messages are written to SPreportError so the calling program
   can check for them. The keywords from MATRIX take priority over
   those from EBOUNDS.

   Add handy functions to return vectors of extension numbers of
   EBOUNDS and MATRIX extensions.

   Changed rmf compression criterion to only include elements with
   values > LO_THRES instead of >= LO_THRES.

   Write EBOUNDS and MATRIX energy columns as D instead of E to avoid
   precision issues with high-resolution optical/UV spectra.

table:

   Changed ENERGIES columns from single to double precision.

   Fixed a bug in convertUnits() which prevented the conversion working
   in the case of input fluxes in ph/cm^2/s/keV

********************************************************************************
                                    ATTITUDE
********************************************************************************

- prefilter:

  Updated to support POSITION and VELOCITY inputs; accepts units of
  m and km (m/s and km/s)

  Incorporated the new magnetic field model of IGRF v13 (released
  December 2019); going back to the year 2000, use full degree-13
  precision of published model instead of degree-10 truncation;
  differences expected to be less than 0.01%

  Prepared for configurable columns=ALLV4 without losing backward
  compatibility

  Added XYZMAGAUX subroutine which computes extra magnetic quantities

  Added new derived columns relating to magnetic field, view directions
  and earth viewing; these are optionally produced if columns=ALLV4
  (however, compatibility with prefilter v3 is maintained by default):

   MAGFIELD MAGFIELD_MIN MAGVECT MAGVECT_POL ZENITH_ANGLE EAST_ANGLE
   NORTH_ANGLE BEARING_ANGLE EARTHPNT_LAT EARTHPNT_LON EARTHPNT_RANGE

  Fixed bug in dependency ordering which led to segfault; now
  derived->coordquat is initialized with pointing instead of RA/DEC/ROLL

  Added MAG_ANGLE = angle between pointing direction and magnetic field

  Added more powerful ability to include or exclude columns from the
  selected list

  Support for attfile == NONE for HaloSat (ATT in .orb file)

  Addition of LOCAL_TIME derived column

- geomagterp (new task): New tool for interpolating geomagnetic
  quantities; the CALDB portion is not ready yet, so for now it's
  basically a glorified finterp

- tristarid: Updated TDISP keywords for rates in source catalog

- Updated tasks to allow longer filenames

********************************************************************************
                                     FIMAGE
********************************************************************************

- flst2im: (v1.4.1) Added support for columns scaled with non-integer
  TSCALn keywords

********************************************************************************
                                     FUTILS
********************************************************************************

- fdiff: Added support for TLONGLONG 64-bit integers

- finterp:

  Check for TLONGLONG type

  'sortkey2' parameter can be an expression

  Improved error output and documentation

  Fixed bug in handling of new sortkey1=(expr) function with tcheck=YES;
  tcheck is now disabled when expressions are used

  Relaxed requirements upon matching input and output column properties
  when they are not needed; removed restrictions on how FITS filenames are
  specified; the extension number is no longer required if the 'first
  table extension' is acceptable; added ability to rename and/or change
  data type of source column names, as documented in the help; preserves
  compatibilty with existing usage

  Added more checking of output columns and make sure any T<col>n
  properties of existing columns aren't accidentally preserved;

  Fixed bug in 'copyall' case when writing existing file

  Fixed bug when column exists in output but is not last column

  Fixed bug in which column number is used for backward compatibility;
  allow copyall=COPYBEFORE and copyall=COPYAFTER for more flexibility
  in transferring input file to output

********************************************************************************
                                      FV
********************************************************************************

- Fixed crash when plotting image tables

- Fixed crash stemming from incorrect WCS initialization

********************************************************************************
                                     HEAGEN
********************************************************************************

- barycorr:

  In the case where TSTART & TSTOP are not in the header, set
  tstart=tstop=TIMENULLVAL to prevent trying to write these keywords.
  This problem was triggered on macOS 10.15 when using a non-Xcode
  compiler suite (MacPorts, Homebrew).

  (heautils library) HDget_frac_time(): Initialize valuei & valuef
  to avoid returning an undefined value (to e.g. barycorr) when
  TSTART & TSTOP are missing

  Handle Swift UVOT event files and Swift MAGHIST files (output of
  uvotevtlc)

  Document (and warn) about .gz input and output files

- ftadjustgti: Now uses fits_open_extlist()

- xrtraytrace: Fixed bug that used back-side mirror reflectivity
  in place of precollimator reflectivity in two places; fixed
  bug that retrieved MINENERG and MAXENERG keywords redundantly
  after FITS file was closed; fixed bug that truncated at 7 the
  number of interactions per photon path written to the PATHCODE
  column in the output events file; this number is now 8, as
  intended.

********************************************************************************
                                    HEASARC
********************************************************************************

- extractor: Fixed trap of no xcolf/ycolf in w_events. Moved
  correction of time for TIMEPIXR to after the time filtering.
  This may make small differences for missions which do not use
  TIMEPIXR values of 0.5 but does make the filtering consistent 
  with that from ftselect.

- fadmap: Path/filename corrections to COS-B/SAS-2 CALDB; corrected date
  errors introduced by Y2K updates

********************************************************************************
                                   HEASPTOOLS
********************************************************************************

- Fixed all heasptools so that output files starting with an exclamation
  mark are handled correctly.

- ftgcorrmf, ftmarfrmf, ftrgsrmfsmooth, ftrsp2rmfarf, ftstripnegchan:

  Use SPcopyKeys for the EBOUNDS extension as well as the MATRIX
  extension.

- ftmkrsp: Trapped case of an input energy bin with no response groups.

- ftsdss2xsp: Fixed check of PLATEID keyword - it is in the primary
  header, not the COADD extension.

- genrsp (wrapper to ftgenrsp): Fixed conditional parameter prompts

- rbnrmf (wrapper to ftrbnrmf): If a binfile has been specified set
  cmpmode=binfile; revised to reflect ftrbnrmf prompting behavior
  (also ftrbnrmf help file): always prompt for cmpmode, and use it
  to determine prompting for binfile & nchan; if an ebinfile is
  specified, pass ecmpmode=ebinfile; otherwise pass ecmpmode=linear
  and the ebfact value.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftdiff: Check for TLONGLONG data type

- ftimgcalc: Use fit_get_eqcoltype to more accurately reflect
  data type of image (could be 'float-like' if BSCAL is used)

- ftmgtime: Now uses fits_open_extlist(); added compatibility layer to
  support mgtime's idiosyncracies for future mgtime wrapper to ftmgtime

- ftsort: Handle TLONGLONG 64-bit integers in input columns; work with
  non-integer TSCALn values; relocated fits_copy_hdutab to CFITSIO;
  fixed case of outfile=infile where the specified column doesn't exist

- ftleapsec: Factored out leap second retrieval code into its own Perl
  library (see above)

- fitsverify (standalone ftverify variant): Use fits_open_diskfile (via
  ifdef) rather than fits_open_file per a user request.  This allows for
  file paths with special characters (e.g. brackets) that would otherwise
  fail; note that this also necessitates omitting the call to
  fits_parse_rootname (via ifdef).

********************************************************************************
                                    XRONOS
********************************************************************************

- All tasks updated to fix memory faults occurring under recent Debian-
  based systems (e.g. Ubuntu 18.10 and newer)

********************************************************************************
                                    XSELECT
********************************************************************************

- Fixed bug in cpd command which could cause a confusing error message
  if immediately preceded by some other set command.

- (xsl_filter_intensity) Considerable simplification due to using (new)
  premax and postmax parameters for maketime.

- Minor rearrangement for some variables which were in the wrong common
  blocks; changed to initialize all global variables with some
  rearrangement to match up with common block order in xselvar.inc;
  Removed unnecessary include of xselect.h and added one of cfortran.h;
  added missing Common_AppInit prototype; replaced call of close by the
  (correct) call of fclose; changed the READ logical to EVREAD for
  clarity; these changes fix an error restoring saved sessions.

- Added support for HaloSat event files.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.27 includes Xspec 12.11:

New Models:

    ismdust    - Extinction due to silicate and graphite grains.
    olivineabs - Extinction due to olivine grains.
    agnslim    - AGN super-Eddington accretion model.
    zkerrbb    - Redshifted version of kerrbb.
    thcomp     - Thermally comptonized continuum convolution model.
    logconst   - Convert normalization to log units.
    log10con   - Convert normalization to log10 units.

Updated Models:

    Using the new 201 tabulated temperatures v3.0.9 AtomDB files
    for apec models. These CEI files reduce potential interpolation
    problems (see http://atomdb.org/interpolation/index.php).
    The interpolation scheme can be switched between log and linear
    interpolation using xset APECLOGINTERP. Another option to reduce
    interpolation errors is provided by xset APECUSENEI which
    switches all calculation of CEI spectra through the NEI
    code. This is slower but can be used to check calculations. To
    recover the older v3.0.9 files use xset APECROOT 3.0.9_51. If
    you do this and also want to use NEI models then you also need
    to use xset NEIAPECROOT 3.0.9.

    The diskline, rdblur, kdblur, kdblur2, laor, laor2, kerrconv,
    kerrdisk have all been sped up using a new FFT-based convolution
    routine.

    The xscat model has been updated to extend the range of the Rext
    parameter for MRN and ZDABAS options from 0-199 arcsec to 0-236 arcsec.

Major overhaul to code calculating statistics.  Main visible
change is that each spectrum can have a different fit statistic
but there is only a single test statistic.

Added support for responses which have been split into parts
with different resolution.  This is very effective for responses
which have high resolution but long tails down to low energies. In
the case of the XRISM Resolve instrument this will provide speed
increases of up to an order of magnitude. Note that if a file
contains multiple response extensions then XSPEC will read and use
them all unless a response extension is specified using e.g. resp.rsp{n}.

PyXspec v2.0.3:

- Plot values can now be retrieved from the individual additive
  components within a model, using the new Plot.addComp() method.

- Added Fit.nVarPars attribute to perform the equivalent of standard
  Xspec's "tclout varpar".

- Added access to standard Xspec's "rerror" command (for running the
  "error" command on response parameters.  This is now available by 
  passing a second (bool) argument to the Fit.error() method.

See also:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

********************************************************************************
                                     XSTAR
********************************************************************************

Xstar v2.54a:

- New in xstar version 2.54a is the inclusion of radiative excitation.
  The rate of radiative excitation for all bound-bound transitions are
  calculated and then multiplied by a factor of 1-cfrac.  So, if cfrac=1 the
  effective rate is zero and results from previous versions are recovered.

  The effects of Thomson scattering as an attenuation process in the continuum
  have now also been included, and the same 1-cfrac multiplier is used so that
  previous results can be recovered.

********************************************************************************
                                     ASCA
********************************************************************************

- ascaarf, ascaexpo, ascalin, fmosaic, gisrti, sispi: Updated to use
  GSL/FGSL random number generator

- cleansis, faintdfe: Updated to use GSL/FGSL gamma function and auxiliary
  routines

- ofaintdfe: Removed this deprecated task

********************************************************************************
                                    EXOSAT
********************************************************************************

- tkexomerge: Altered window parenting to make children windows visible

********************************************************************************
                                     MAXI
********************************************************************************

- mxdownload_wget: Added new ATT data types to downloadable products;
  force gmtime() to use four-digit year

- mxextract: Avoid writing repeats of STDGTI rows; replaced printf with
  headas_printf output

********************************************************************************
                                     NICER
********************************************************************************

NICERDAS v007:

- nicerl2:

  Fixed crash when mkfile is specified but gzipped version does
  not exist; also changed check for missing $indir, previously
  reported as a missing file

  Added parameter 'niprefilter' which re-runs niprefilter task
  if set to YES (additional new parameters orbfile, attfile,
  prefilter_columns)

- nicerpi, nicertimecal, nicertimeconv, nimaketime, niprefilter,
  niprefilter2:

  Changes to fix the timegm() Y2020 "trap": This affects routines
  that use Perl's Time::LocalTime::timegm() function:

   http://blogs.perl.org/users/grinnz/2019/07/the-timelocal-trap.html

  For NICER, which uses timegm() for the year 1970, this would cause
  problems after the year 2020, as timegm() treats the year entry of
  "70" as meaning 2070 instead of 1970, when the run date is after
  the year 2020.

- nicerpi: Bubble pigain and pioffset parameters up to 'nicerpi' level

- nicertimeconv: Use HeaSoftLeapSec library version of NicerTime.pm;
  fixed bug in output of GPS time (offset of ~20 sec); better handle
  leap second transitions; output of MJD

- nimpumerge: Pass history parameter to subtasks

- niprefilter: When writing NULL columns (missing APID) use same
  column-ordering as normal; Added ability to re-run prefilter
  and update .mkf file in place using RUNMODE=UPDATE;
  Fixed fatal bug in handling of global start/stop time from MPU
  housekeeping; Fixed bug in handling of vehiclefile=NONE;
  Be more careful about preserving other extensions of infile;
  Fixed bug of copying keyword comments when runmode=UPDATE

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS V1.9.0:

- This is primarily a quality-of-life upgrade for the NuSTARDAS.
  The two main additions are: (1) Add the ability to save the
  barycenter-corrected event files in the output directory when
  barycorr=yes. Previously the user had to use cleanup=no to retail the
  barycenter-corrected event file, which also stored a number of other
  intermediate files. This allows for a more streamlined analysis
  approach for timing observations; (2) The "PRIOR" column is now
  preserved by default when producing the cleaned event files. This
  column is useful for recovering the time-dependent livetime on
  sub-second timescales and for high-rate observations. Please see
  the NuSTAR Software User's Guide for more details.

  There are also several minor bug fixes and other improvements:

- nupipeline: 1) when barycorr=yes and existage=3: updated the
  'nuproducts' run setting the orbit file to the "attorb" file;
  2) updated the 'nuproducts' run with `write_baryevtfile=no'.

- nuproducts: 1) added new input parameter `write_baryevtfile' to
  optionally save the barycenter-corrected event file when barycorr=yes;
  2) added an internal check to make sure that pilow, pihigh, pilowarf,
  pihigharf, grppibadhigh, grppibadlow are integer numbers; 3) added an
  internal gunzip of input mastaspectfile (to speed-up processing).

- nuscreen: added the "PRIOR" column to the list of columns that are
  preserved by default when the cleaned event files are created.

********************************************************************************
                                     ROSAT
********************************************************************************

- detect: Updated to use GSL/FGSL gamma function and auxiliary routines

- pcecor, pctcor, pcpicor, pcsasscor: Retired these deprecated tasks;
  no longer needed since ROSAT data has been reprocessed using the
  necessary corrections (i.e. with SASS version SASS7_8)

********************************************************************************
                                    SUZAKU
********************************************************************************

- xisarfgen: Updated to support PHAFILE==NONE

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- batdetmask, bat-burst-advocate, batsurvey, batsurvey-detmask:

  Changes to fix the timegm() Y2020 "trap": This affects routines
  that use Perl's Time::LocalTime::timegm() function:

   http://blogs.perl.org/users/grinnz/2019/07/the-timelocal-trap.html

- batcelldetect:

  MPFIT: Bug fixes for two-sided derivative mode (buffer overflow
  avoidance as well as correct two-sided calculation)

UVOT:

- uvotmaghist, uvotproduct, uvotsource: Improved region validation
  for UVOT photometry/light curves.

- uvotproduct: Install uvotproduct ds9 v7 grid file in REFDATA

XRT:

- xrtgrblc: Modified XRT pipeline with correct settings to match
  revisions to nH code

- xrtgrblc, xrtgrblcspec: Added support for high resolution HI4PI
  all-sky nH map with nhmap=2

********************************************************************************
                                     XTE
********************************************************************************

- hxtrsp, pcarsp: Updated to call ftrbnrmf instead of rbnrmf
  (rbnrmf is merely a wrapper to ftrbnrmf)

- pcaextspect2:

  Changes to fix the timegm() Y2020 "trap": This affects routines
  that use Perl's Time::LocalTime::timegm() function:

   http://blogs.perl.org/users/grinnz/2019/07/the-timelocal-trap.html

  Also: bug fix for C-preprocessor macro expansion error

- trans2fits: New wrtparm=O option to create OGIP-compatible event
  files (mostly cribbed from xenon2fits work several eyars ago);
  further mods to simplify code and to write new output columns that
  counts various interesting flags

- addshots, addsine, fakelc: Updated to use GSL/FGSL random number generator

- xenon2fits: (O)GIP output format now agrees with trans2fits

- Removed buggy and erroneous clause meant to deal with empty GTI
  entries, and other overzealous GTI checking

********************************************************************************
                                     MISC.
********************************************************************************

- Dropped support for Cygwin in favor of Windows Subsystem for Linux (WSL)

- Fixed bugs in the DESTDIR mechanism

- HEASoft now includes the GSL & FGSL libraries, and therefore GNU Fortran
  compilers older than v5.x are unsupported.

- PGPLOT:

  Updated PGPLOT dynamic library build to link in PNG library (if
  available); this aids external packages (e.g. ISIS) using our libpgplot
  by allowing the PNG dependency to be inherited.

  SVG driver: improved support for Microsoft Edge SVG implementation

- Fixed history keyword writing for long (>72 char) lines;
  some characters were being lost using the previous algorithm
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                        RELEASE NOTES FOR HEASOFT 6.27.1
                                 April 13, 2020
********************************************************************************

The HEASoft 6.27.1 release is driven by critical updates to the mission-
specific NuSTAR data analysis software, but includes bug fixes in the
HEASP and HEASPTOOLS packages as well.

Patches are available for users who wish to update their existing 6.27
installation to 6.27.1.  Please see our download page for more information:

  https://heasarc.gsfc.nasa.gov/lheasoft/download.html

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS V1.9.1 and V1.9.2:

 numetrology:

 This NuSTARDAS release is required for analysis of all NuSTAR
 observations performed after March 16, 2020. On that date the on-board
 metrology system (which tracks the relative motion of the NuSTAR optics
 bench and the focal plane bench) underwent a flight software upgrade to
 improve the longevity of the metrology laser system.

 NuSTARDAS V1.9.1 and V1.9.2 are upgrades to handle metrology data in
 METSTATE 4 and 6, respectively, which are flags in the data stream that
 self-document the state of the laser metrology system. These software
 changes are transparent to the user requiring no syntax changes when
 calling Stage 1 of nupipeline. There is no change to the quality of the
 science data.

 Please note that attempting to use NuSTARDAS V1.9.0 (released with
 HEASoft 6.27) or any earlier versions of the NuSTARDAS with data taken
 after March 16, 2020 will result in an error during Stage 1 of the
 pipeline processing and result in empty PSD, corrected PSD, and mast
 files. 

 This version of NuSTARDAS is backward compatible with all NuSTAR data
 in the HEASARC from before March 16, 2020.

 More details can be found in the NuSTAR Software Users's Guide.

********************************************************************************
                                     HEASP
********************************************************************************

pha:
 
  Fixed bug when grouping by S/N which caused last set of channels,
  which do not achieve the required S/N, to be incorrectly labeled
  as good quality.
 
********************************************************************************
                                   HEASPTOOLS
********************************************************************************
 
- All tools now copy any primary array and keywords from the input
  file to the output file. Also, where feasible, any extra columns
  in the extension(s) being modified are also copied from the input
  file to the output file.
 
- ftdmprmf: Fixed bugs in writing out the number of response values
  per group, total efficiency, and missing final energy range.
 
 
--------------------------------------------------------------------------------------------------------------------------------------
 
 
********************************************************************************
                         RELEASE NOTES FOR HEASOFT 6.28
                                August 11, 2020
********************************************************************************

The HEASoft 6.28 release is driven primarily by updates to mission-
specific data analysis software (NuSTAR, Swift), but includes other
enhancements and fixes.

As before, configuration-related changes throughout the package mean that
users who already have HEASoft installed will need to completely replace
their software installation; there is no clean way to simply overlay
this new release or to update an existing installation.

********************************************************************************
                                    CFITSIO
********************************************************************************

Version 3.49:

- Fix to imcompress.c.  It now turns off quantization if ZSCALE
  and ZZERO columns are missing.  Treatment will be the same as
  if ZQUANTIZ were set to 'NONE', even if ZQUANTIZ is present
  and set to something else.

- Added mutex to fits_execute_template() function so that the
  creation of files using ASCII templates will be thread safe.

- In fpack when using -table flag, replaced warning message with
  a more detailed description mentioning FITS format update.

- Added flag to CMake builds to disable curl dependency.  Also
  only add CURL_LIBRARIES to CMake link target if curl is found.

- Minor adjustment to download progress output.

- Added support for Haiku OS.

********************************************************************************
                                    CCFITS
********************************************************************************

- Bug fix in setLimits functions needed to create objects of
  type ColumnVectorData<unsigned short>

********************************************************************************
                                     HEASP
********************************************************************************

- Fixed a bug which could cause pha files to have both a keyword and
  column with the same name.

- Changed read column methods so that they check for a keyword if the
  column is not found rather than the other way round. This avoids a
  possible problem if the extension has both.

- Efficiency improvements.

- Added options for start and end channel to grouping::loadOptimal.

- Fixed a bug in grouping::GroupBin which was not taking into account the
  quality flag.

- In arf::read check for an EBOUNDS extension to read ENERG_LO and ENERG_HI
  which might occur in a type II file

- Fixed a bug in rmf::check which incorrectly flagged an error
  if the F_CHAN column had the maximum channel value and the first
  channel was non-zero.

- Modified the rmf and rmft classes to change from vectors to
  vectors of vectors for the first channel in group, number of
  channels in group, order of group, and matrix elements. This leads
  to a simplification in the code.

 - Added a new version of rmf::addRow which takes the channel group
   information. Added a rmf::substituteRow method which takes a
   compressed format row as input.

- Changed rmf::normalize to return the vector of normalization
  factors.

- Added an rmf::changeFirstChannel method to change the first channel
  value used (usually switching between 0 and 1.

- Trapped case in table::getValues of there being no overlap between
  the input energy range and the tabulated energy range.

********************************************************************************
                                    CALTOOLS
********************************************************************************

- addarf: Fixed bug preventing clobber parameter from working

- dmprmf: Replaced with a wrapper to ftdmprmf (heasptools)

********************************************************************************
                                     FUTILS
********************************************************************************

- fverify: Synchronized with ftverify (improved checking for
  duplicate HIERARCH keywords)

********************************************************************************
                                    HEASARC
********************************************************************************

- addspec: Updated to use ftmarfrmf & ftaddrmf (heasptools)
  instead of marfrmf & addrmf

- extractor: Fixed bug writing a region extension if the region
  contains shapes with different numbers of points

********************************************************************************
                                   HEASPTOOLS
********************************************************************************

- Changes for new internal structure of rmf class.

- ftaddrmf: Slight efficiency improvement: reduces number of rmf
  object copies by one.

- ftflx2xsp: Added a first parameter to let the user control the first
  channel number.

- ftgrouppha: Added option to use minchannel and maxchannel
  parameters with the opt method; modified so if the backfile or
  respfile parameters are set then it writes the appropriate
  keyword values to the output spectrum; added reading background
  and/or response file from the input file if the parameters are
  set to %; also, do not reset the ANCRFILE in the output file.

- ftrbnrmf: Improved testing and diagnostic information for user
  setting inconsistent input

- ftrgsrmfsmooth: Fixed bug in reading the image description file.
  Slight efficiency improvement from not copying an rmf object.

********************************************************************************
                                    HEATOOLS
********************************************************************************

- ftjoin: Minor pattern matching improvements

- ftmerge: Added support for tables with variable-length arrays

- ftsort: Changed way that variable columns are checked for

********************************************************************************
                                    XSELECT
********************************************************************************

- Fixed problem with the gisclean command if a filename included an
  environment variable.

********************************************************************************
                                     XSPEC
********************************************************************************

HEASoft 6.28 includes Xspec 12.11.1, a patch release:

All fixes and enhancements contained in 12.11.0 patches (a-m) are
included. The following are also included:

- Added new "show bayes" option to display all non-constant Bayesian
  prior assignments to individual parameters.

- All Bayesian prior assignments are now properly stored in files
  generated by 'save' command.

- Added new tclout(r) modnames option to write out model names.

  Added new tclout(r) pfree option to give T/F on whether a parameter
  is free.

  Added new tclout(r) option "tclout modgroups <modname>" which returns
  the data groups associated with a particular model.

- Modified tclout(r) so it only writes out each model once, not one
  time for each data group to which the model applies.

- Removed the requirement of a valid fit to perform a "flux error"
  calculation, provided that a proper chain file for the model is
  loaded.

- Improved the generation of parameters using simpars when parameters
  have widely varying sizes. It is still better in this case to define
  a new model using mdefine which scales the parameter values appropriately.

- Trapped problem in table models if there is no overlap between the
  response energies and the tabulated energies.

- Fixed problem that if two different response matrices with the same
  name but in different directories are used then xspec assumes that
  they are the same.

- Fixed problem that generated an error if the response F_CHAN had
  the maximum channel value and the first channel was non-zero.

- Fixed bug for corner-case of attempting to fit when response
  parameters are assigned to inactive models.

See also:

 https://heasarc.gsfc.nasa.gov/lheasoft/xanadu/xspec/issues/issues.html

********************************************************************************
                                    NUSTAR
********************************************************************************

NuSTARDAS v2.0.0:

Requirements: NuSTAR CALDB 20200YXX

This NuSTARDAS implements a new temperature-dependence during the ARF
generation that should improve performance in a small number of cases
for FPMA. The software change is required to account for cases where
the optic for FPMA is "cold", implying a decrease in the effectiveness
of the thermal blanketing (MLI) and a corresponding increase in the
low-energy transmission. This primarily affects observations after 2018.

This builds on the long-term ARF changes for FPMA documented here:

 https://heasarc.gsfc.nasa.gov/docs/heasarc/caldb/nustar/docs/release_20200429.txt

The accompany CALDB patch 20200YXX contains the temperature-dependent
corrections and is required for this software version.

Details on the issue can be found in this paper:

 https://arxiv.org/abs/2005.00569

More details about the MLI correction can also be found here:

 http://www.srl.caltech.edu/NuSTAR_Public/NuSTAROperationSite/mli.php


:: Note ::

This patch requires access to the optics bench housekeeping file
(obebhkfile). This file is distributed for each observation in the
"hk" subdirectory from the HEASARC. If an observation is downloaded
from the HEASARC, as always, we recommend running nupipeline to
recalibrated the data using the latest CALDB files. This will copy
the OBEB HK file into the output directory (commonly the "event_cl"
directory). No further action is required by the user as these input
files are automatically detected by nuproducts during later analysis
if they are present in the event_cl directory.

To call nuproducts directly on the data downloaded from HEASARC
requires the use of new input keyword: `inobebhkfile'. Details of
this are described in the software user's guide

 https://heasarc.gsfc.nasa.gov/docs/nustar/analysis/nustar_swguide.pdf

and in the quickstart guide:

 https://heasarc.gsfc.nasa.gov/docs/nustar/analysis/nustar_quickstart_guide.pdf

:: Software changes ::

The major changes introduced in this version are:

- numkarf: 1) Added temperature dependency for ARF files CALDB query;
  2) Added new 'obebhkfile' input parameter and computation of
  "OPT0_5TEMP" average value.

- nuproducts: 1) Modified call of numkarf task; 2) Added new
  'obebhkfile' input parameter.

- nupipeline: 1) Modified call of nuproducts task; 2) Added new
  `inobebhkfile' and `obebhkfile' input parameters.

- nu_highfits: Modified to support TFORM values '1PD(X)/1PI(X)'.

********************************************************************************
                                     SWIFT
********************************************************************************

BAT:

- (batgrbproduct) bat-burst-advocate: minor typo fix in filtering
  expression

UVOT:

- (uvotimage) uvotrawevtimg: BUG FIX: update attitude for each new
  event time. The primary impact of this bug was star trails in
  settling images.

XRT:

- XRTDAS v3.6.0 (build 36): Modifications to support variable-
  length arrays (TFORM '1PD(X)/1PI(X))' (as are now generated by
  extractor)

- xrtlccorr: Corrected minor bug in a few error messages

- xrtgrblcspec: Minor correction to avoid empty channels with small
  gap intervals

********************************************************************************
                                     XTE
********************************************************************************

- xenon2fits: Fixed crash

- pcarsp: Fixed call to ftrbnrmf (no chatter parameter)

********************************************************************************
                                     MISC.
********************************************************************************

- Miscellaneous updates to support GCC 10 (previously included with
  HEASoft v6.27.2a)