                     Changes in version 2026-09-22                      

Changed

  - 'tsGetPOT' now selects the optimal POT threshold using a continuous
    penalty on the deviance (based on the deficit from
    'minEventsPerYear') together with a shape-parameter
    boundary/normalized-distance fallback score, replacing the previous
    AIC + skip/penalty scheme. It now fits the GPD with 'L-BFGS-B'
    constrained by 'shape_bnd' (std.err.type = "observed") and returns
    the full fit object in 'pars'.
  - 'tsGetPOT' uses a finer grid of candidate percentiles above the 95th
    percentile and cleans NA/Inf values before peak detection.
  - 'shape_bnd' is now a user-facing argument of 'tsGetPOT',
    'tsEvaSampleData' and 'TsEvaNs'. In 'TsEvaNs' it defaults
    automatically to c(-0.5, 1) for the high tail and c(-1, 0) for the
    low tail when left as NA.
  - 'tsEVstatistics' now reuses the GPD fit computed during POT
    threshold selection (stored in 'pointData$POT$pars') instead of
    re-fitting the GPD.
  - 'TsEvaNs' gained additional robustness in the 'trendPeaks' case when
    the automatic trend threshold cannot be estimated, and guards the
    low-flow transformation against a NULL 'trans'.
  - 'tsEvaFindTrendThreshold' keeps the stability, negative-flow and
    percentile vectors aligned and guards the breaking-point detection
    against short series.
  - 'tsEvaNanRunningMean' was reimplemented with cumulative sums for a
    large speed-up on long time series; results are unchanged. Package
    byte-compilation was enabled ('ByteCompile: true').

Fixed

  - 'tsEvaNanRunningVariance' returned a slightly incorrect running
    variance: in the previous incremental implementation the count of
    valid points could drift out of sync with the summed squared values
    (the removal used index 'minindx - 1' while the addition used
    'maxindx + 1'). It has been reimplemented with cumulative sums to
    compute the correct centered-window mean of squares. The correction
    to the variance is small: on the bundled ArdecheStMartin series, the
    relative change is of the order of 1-2% (median ~1.7% at a one-year
    window), so fitted GEV/GPD standard-deviation-dependent parameters
    shift only slightly.
  - 'tsEvaNanRunningStatistics' contained more serious errors: the same
    valid-point count desynchronisation and, in addition, each incoming
    value was centered by the running mean at an incorrect index. This
    produced third and fourth running moments that were substantially
    wrong (median relative errors of several hundred percent on the
    bundled ArdecheStMartin series). It has been reimplemented with
    cumulative sums to compute the correct centered-window moments
    (validated to machine precision against a direct definition).
    Diagnostic quantities derived from these moments therefore change
    from previously incorrect values to correct ones.
  - As a consequence of the running-variance fix,
    'tsEvaTransformSeriesToStatSeasonal_ciPercentile' no longer returns
    an all-NA 'trendSeries' on short series. Previously the incorrect
    running variance could yield negative values whose square root
    produced NaNs that propagated through the seasonal
    standard-deviation estimation; this is now resolved.

                     Changes in version 2025-06-09                      

Added

  - 'tsEvaTransformSeriesToStationaryMMXTrend()' added. It computes the
    trend of monthly maxima and adds to the suite of trend computation
    functions.

Changed

  - New rules for the selection of the optimal GPD fit in 'tsGetPOT'.
    The fit is now constrained based on the shape parameter value (need
    to be between two bounds) and the AIC.
  - TrendTH can be specified outside the 'TsEvaNs' function
  - Shape bounds updated in 'TsEvaNs'
  - Updated handling of trendPeaks cases in 'TsEvaNs': increase
    robustness with iterative approach in cases where the trend is
    completely stable.
  - 'check_timeseries' now accepts timeseries where a maximum of two
    years are missing

Fixed

  - Correction of a mistake in the output writing of
    'tsEvaComputeReturnLevelsGEV'. The output matrix was not initiated
    properly. The new matrix is a transposition the old one.

                     Changes in version 2024-06-24                      
