Changes in Version 0.3.1 o Results change in four cases, each described below: an each-and-every-loss layer with limited reinstatements combined with an aggregate deductible; totals, gross claims and reinstatements used, which are no longer rounded to two decimals; the ratios of PureIBNRGamma() and PureIBNRLNorm(); and the quantiles, capped means and exposure curves in the three items that follow. The Shiny tools also no longer load settings files saved as .rds. o qSlicedGammaPareto() and qSlicedLNormPareto() give NaN for a probability outside [0, 1], as qgamma() does. Where the reciprocal of the Pareto shape is a whole number (a shape of 1, 0.5 or a third), a probability above 1 gave a plausible-looking quantile instead: q = 1.1 gave -7357.59 with a shape of 1, and 54134.1 with a shape of 0.5. o SlicedGammaParetoCappedMean() and SlicedLNormParetoCappedMean() give Inf at an infinite cap when the Pareto shape is 1 or below, agreeing with SlicedGammaParetoMean() and SlicedLNormParetoMean(). They gave NaN when the weight of the tail underflowed to zero. o ExposureCurveLNorm() gives 1 at an infinite cap, where it gave NaN when the mean of the distribution overflowed (a sigma of 40, say). o ExposureCurveGamma() and ExposureCurveLNorm() name themselves when arguments of different lengths cannot be recycled, as the other functions do; they named the capped mean they call. o simulate_claims() rejects a progress argument that is not a function, which it used to ignore. o Settings files keep the exact value of every number. They were written with 15 significant digits, so a value such as a third came back slightly different and a seeded run loaded from its own settings file could give different results. Values that need no more digits are still written plainly (0.3 stays 0.3). o A settings file with a setting given twice, a blank line between the settings, no version line, or a value built to be enormous is refused with a message saying what is wrong. A repeated setting used to load two values into a field that holds one, and a missing version line reported "subscript out of bounds". o Claims simulator: a slice added while settings or an example are loading no longer makes the next "Add slice" jump by the slices that were pending. o Claims simulator: the report's histogram of claim totals keeps simulations whose total is negative. It left them out while its note said that only the simulations totalling zero were left out. o Claims simulator: the report's headline figures, layer metrics and gross/ceded/net table round the modelled series on its own scale, so they agree with the statistics table on the same page and with the Compare tab. A layer with a mean of 1.90 and a median of 0.00 was shown as 2 and 0. o Claims simulator: distribution parameters far below one are shown to three significant figures (an Exponential rate of 1e-5, a mean claim of 100,000, was shown as 0), and a seed of 100000 is shown as 100,000, not 1e+05. o Claims simulator: the report fits a phone-width window; below about 352 px the right edge of every section was cut off. Its charts are drawn with the cairo device on Windows, as the charts in the app already were. o Claims simulator: the Compare tab tells apart two runs that differ only by "Truncate at zero", and leaves out of the chart a run with too few simulations to draw a curve, which appeared in the legend with no curve. Return-period charts label their vertical axis Ceded or Net when that is what they show, as the other charts do. o Claims simulator: the frequency and severity choices and the Compare tab's run name are announced by screen readers. o Claims simulator: with multiprocessing on, an ordinary error during a run (an invalid parameter, an overflowing distribution) no longer shuts the parallel workers down, so the next run reuses them instead of starting new ones. The workers are restarted only when one of them breaks, and then no connection to a replaced worker is left open to be closed later with a "closing unused connection" warning. o GLM fitting tool: a formula may use the data's columns, the formula operators and I(), log(), exp(), sqrt(), pmin(), pmax(), poly(), factor(), as.factor(), interaction() and offset(); anything else is refused by name. The formula was run as R code, so a settings file from someone else could carry code that ran on the next click of Fit model. o GLM fitting tool: after data is imported, the model tiles, the chart and the downloads say which file the model on screen was fitted to, and the downloads wait until it is fitted again; a download asked for anyway (from a page left open across the import, or a kept link) is refused rather than served. The tiles, the coefficients and the downloaded predictions used to come from the previous import with nothing saying so. o GLM fitting tool: two stored models are compared by AIC only when they were fitted to the same import and left out the same rows; models of unrelated data with the same number of rows were marked "lower". o GLM fitting tool: warnings raised before a binomial response with more than two values are kept rather than replaced; the predictions CSV calls its column model_prediction when the data already has one called prediction; and the number of bands read from a settings file is held to the range of the slider. o GLM fitting tool: a model is fitted as the screen shows it even when Fit model is clicked straight after loading a stored model or a settings file, or after a change of family, before the browser has reported the new values. The fit mixed the loaded family and link with the response, offset, weights and formula shown before the load, so a stored binomial model could be fitted to the previous count response and fail. A settings file whose link does not suit its family uses the family's default link and says so, instead of leaving the link blank on screen. o GLM fitting tool: MySQL is no longer offered as a data source, and RMySQL is no longer suggested; RMySQL is deprecated by its authors. A settings file that chose MySQL loads without it, and the database type is left as it is. The database user no longer defaults to MySQL's "root". o Distribution fitting tool: a file that is not valid UTF-8 is read as Windows-1252, which is what Excel writes on a German or French Windows. An accented character used to end the session with a grey overlay as soon as the file was uploaded. o Distribution fitting tool: a row with more fields than the rows above it keeps them in their own columns. The surplus value started a new row instead, so claims that were never in the file were fitted (a file of eight claims gave eleven). o Distribution fitting tool: the slicing point and piecewise Pareto threshold sliders span the claims up to the largest once the top half a percent are left out, so the body of a heavy-tailed distribution can be reached; one large claim used to leave the body in less than a pixel of the bar. A point can also be typed in the box beside its slider, and the sliders grow to hold a value beyond their range. o Distribution fitting tool: the header is found after more than 100 blank lines; the frequency histogram shows the probability a model puts below the smallest count, which zero-truncated data left off the chart; the Pareto alpha between two slicing points needs at least three claims between them and reports a fit that did not converge, instead of showing whatever the optimiser stopped at; and the Data tile asks whether the first row is a header when the column names are all numbers. o The help pages say what each function does rather than repeating its title, the sliced distribution pages say which argument is the Pareto shape, and the three applications link to each other. o The vignettes no longer carry LaTeX-only markup (\pagebreak and \usepackage[utf8]{inputenc}) that an HTML vignette ignores, and no longer show the date they were built on CRAN. The Sliced distributions vignette refers to the capped mean vignette by its title. o The exploratory scripts in tests/CappedMean, tests/PureIBNR and tests/SlicedDistributions are left out of the package tarball; they were never run by R CMD check. o DESCRIPTION: the third article is "Taken to excess", the Shiny tools are listed one by one, and testthat (>= 3.0.0) is required for the tests. README: a CRAN badge and a list of the vignettes. o PureIBNRGamma() and PureIBNRLNorm() compute the ratios from the unrounded pure IBNR duration. They divided the duration rounded to 0.01 days, so short periods lost precision (a one-hour period gave 0.96 instead of 1.00000, a week was wrong in the fourth decimal); ratios of long periods can change in the fifth decimal. o Shiny tools: charts are redrawn when the window is resized (legends used to overlap), and on Windows they are drawn with the cairo device when no other device is installed, with greyscale anti-aliasing, so the dark theme no longer shows smeared text, bright grid lines or coloured fringes on text. o GLM fitting tool: the downloaded model (RDS) no longer contains the Shiny session. It used to hold every input, including a database password typed on the Data tab, and was many times larger than the model itself. o GLM fitting tool: an import that fails keeps the data imported before, so the data and the fitted model stay together, and the Data tab says that the last import failed. o GLM fitting tool: the AIC of two stored models is marked "lower" only when they use the same weights; otherwise the models are shown as not comparable. o GLM fitting tool: after an import, the response defaults to a column whose name suggests one (such as claim_count or loss), and the chart variable to a column that is not an ID. Columns already chosen are kept. o GLM fitting tool: settings are saved as a plain text file ("glm_fitting_tool_settings.txt"), one "field: value" line per setting, and loading one never runs code. Settings files saved as .rds by earlier versions no longer load; save the settings again to get a text file. o GLM fitting tool: the database server, port, database name, user and SQL query are saved with the settings only when "Include database connection details" is ticked (off by default), so a shared file does not disclose internal infrastructure. The password is never saved. o GLM fitting tool: in the "Data with predictions" CSV download, text cells and column names that a spreadsheet would read as a formula (starting with =, +, -, @, a tab or a carriage return) are written with a leading ', so opening the file cannot run a formula from the uploaded data. Numbers are unchanged. o Claims simulator: values typed just after loading settings or an example are no longer set back to the loaded values on a slow machine, and fields that appear late (a slow browser) still start from the loaded values. o A failed parallel run no longer leaves a socket connection open: the worker that the future package relaunched after the error was never shut down, and R later warned "closing unused connection" in the console. o Distribution fitting tool: the Negative Binomial fit no longer falls back to the Poisson (size 1e8) on overdispersed claim counts; it finds the maximum likelihood size whenever the variance is above the mean, with or without weights, and matches MASS::fitdistr(). o Distribution fitting tool: the columns are guessed again after the separator or decimal mark is changed, while a column you chose is kept; the slicing point and piecewise Pareto threshold sliders no longer show overlapping tick labels. o Claims simulator: simulations whose total is undefined (NaN) are no longer dropped silently; the report, the summary and the Compare tab count them, and the statistics state how many simulations they use. Normal severities whose summed mean or standard deviation overflows add up the claims, as simulating every claim does, instead of giving NaN. o Claims simulator: very large values are shown as e.g. 1.000e+308 on the Compare tab and in the implied moments instead of hundreds of digits. o Claims simulator: switching a distribution or layer away and back, or switching the custom seed off and on, keeps the values typed. o Claims simulator: loading settings resets 'Truncate at zero' and clears unused Pareto slices; quick 'Add slice' clicks each add a slice. o Claims simulator: layout fixes for the navbar brand, the example list (two examples have shorter names), the Compare table labels and the return-period chart's "1 in 200" label, which stays inside the chart. o Claims simulator: report charts of one simulation or of equal totals are drawn sensibly; the 95% range for the mean is not below zero for totals that cannot be negative and is labelled a normal approximation; the tail count is now "Simulations at or beyond VaR 99.5%" and TVaR is documented as the mean of the worst ceiling(n x (1 - p)) simulations. o simulate_claims() and simulate_function(): the documentation of number_of_reinstatements_used says that with an aggregate "exclude" layer the reinstatements are counted before the exclusion. o Claims simulator: the report and the Compare tab no longer fail for a run whose totals include both +Inf and -Inf when a reinsurance structure is set. o Claims simulator: the report explains undefined (NaN) totals by their cause (claims that overflowed to both +Inf and -Inf, or an infinite amount meeting a layer with an infinite deductible or limit) instead of always blaming an excluded layer with an infinite limit. o Claims simulator: the Compare tab shows infinite values as Inf or -Inf in every row, keeps the dash for undefined values, and says what both mean; the report uses the singular wherever a count is one ("1 simulation"). o Shiny tools: the header stays on one row from 992 px wide, and on narrow screens the app name gives way to the menu button instead of pushing it off the page. o Claims simulator: settings files are plain text (.txt) files that can be read and compared, and loading one never runs code. Old .rds settings files no longer load; save the settings again from this version. o Claims simulator: the Compare tab's return-period chart is drawn with base R graphics. It follows the app's light, dark or system theme and wraps its legend at narrow widths; it no longer shows values on hover. o Parallel runs of simulate_function() use the future package directly instead of future.apply. Seeded results are unchanged, sequential and parallel. o simulate_function() and simulate_claims() return totals, gross claims and reinstatements used at full precision; they were rounded to two decimals, which distorted results for small amounts (e.g. in millions). The app and the report round only for display, and small amounts keep about three significant digits. o Results change when an each-and-every-loss layer with limited reinstatements is combined with an aggregate deductible. The aggregate deductible now comes off the year's layer recoveries before the aggregate limit and the reinstatement capacity cap them (the market convention): three claims of 100 through 100 xs 0 with no reinstatements and an aggregate deductible of 50 now cede 100, not 50. Reinstatements used are counted after the deductible. o The chance that all reinstatements are used, and the chance the layers are exhausted, are exact rather than counting amounts just below the limit. o Infinite distribution parameters, numbers of simulations, seeds, chunk sizes, slice alphas and numbers of reinstatements are rejected with a clear message. Inf is still allowed for the cap, deductibles, limits and slice thresholds. o apply_deductible_limit() stops on a negative deductible or limit, and its documentation describes what it returns for each structure. o PureIBNRGamma() and PureIBNRLNorm() count days on each date's own calendar and clock, so Date, POSIXct and mixed inputs agree and results no longer depend on the time zone or daylight saving (a mix of Date and POSIXct used to report the whole period as unearned). Results can change in the second decimal where the time zone had shifted them. Non-date input and expiry dates before inception dates are errors. o The capped mean, exposure curve, ILF and sliced distribution functions stop with a clear error on non-positive parameters or negative caps, instead of returning plausible-looking numbers. NA parameters still give NA. o ParetoCappedMean(), ExposureCurvePareto() and the sliced functions accept zero-length input (returning numeric(0)) and keep matrix dimensions and names. o LNormCappedMean() no longer overflows to NaN or Inf for large sigmas, and dSlicedGammaPareto() and dSlicedLNormPareto() no longer overflow for large slice points or shapes. erf() is accurate near zero. The sliced functions give the attritional distribution for an infinite slice point, instead of NaN. o The PureIBNR vignette computes its theoretical pure IBNR count rather than hard-coding it. o Distribution fitting tool: the Gamma fit gives the exact maximum likelihood estimate at any scale; claims of 1e9 or more got a wrong shape. o Fitting tools data upload: with a decimal comma, points are read as thousands separators ("15.000,5" is 15000.5), and files with a separator at the end of each row are read correctly (the columns were shifted by one, or the file failed to load). o GLM fitting tool: "." in a formula (also ". - x", ".^2") leaves out the offset and weights columns, empty or single-valued columns, and text columns with very many values such as IDs, and says which were left out. o GLM fitting tool: explains formulas it cannot read, text responses for non-binomial families, single-valued predictors and columns with no values, instead of showing R errors; reads numbers with thousands separators ("1,200") as numbers; chart labels mention exposure only when the offset is used as one. o Distribution fitting tool: the first piecewise Pareto layer includes the smallest claim; all-zero claim counts give a clear message instead of failed fits; very large and very small numbers are shown in scientific notation, and large weighted totals in full. Changes in Version 0.3.0 o Fewer dependencies: plotly, reactable, fitdistrplus, future.apply and htmltools are no longer imported, so installing NetSimR installs 35 packages instead of 82. The charts of the three Shiny tools are drawn with base R graphics, the tables are plain HTML, and the Poisson and Negative Binomial fits of the distribution fitting tool are computed directly, with the same results as before. o Distribution fitting and GLM fitting tools: the charts follow the light or dark theme; they no longer show values on hover or zoom. The data previews show the first 100 rows in a table that scrolls both ways, instead of a searchable table. o Distribution fitting tool: the Poisson and Negative Binomial fits are the exact maximum likelihood estimates (fitdistrplus's optimiser stopped slightly short of the maximum). When the counts are not overdispersed the Negative Binomial tends to the Poisson; its size is then set to 1e8, with a note. o Distribution fitting tool: suggests the Negative Binomial only when its fit has the lower AIC (the suggestion could contradict the fit table); the frequency histogram labels counts from 2^31 up in full (they read "NA") and its last bin ends at the largest count; the mean excess chart explains that it needs three different claim sizes instead of drawing an empty chart. o Fitting tools: the data preview shows the first 50 columns and opens at once for wide files (1,000 columns took about 20 seconds). o GLM fitting tool: the actual against predicted chart fits its left axis to the values, so a response around 1,000 no longer draws as a flat line; its bands read "18-24" rather than "(18.0006,23.9723]"; a text variable with more than 100 values gives a message instead of hundreds of bars. o Claims simulator: the Compare tab's return-period chart shows runs with negative totals (e.g. a Normal severity with a negative mean); its y axis used to start at zero. The chart's x axis reaches 1 in 1,000,000. o Simulation report: runs with infinite totals (e.g. a Pareto severity with a very small alpha) no longer fail with "need finite 'ylim' values". The charts leave infinite totals out with a note, the tables show Inf, and a ceded or net column that would be infinite minus infinite is left blank instead of showing NaN. Very large amounts are shown in scientific notation. o simulate_function(): a seedValue given without seedSetBinary fixes the seed (seedSetBinary defaults to TRUE when seedValue is given); it used to be ignored. o apply_deductible_limit(): an NA, missing or unknown reinsurance_structure, or more than one, is an error that lists the options. o The capped mean, exposure curve, ILF, sliced distribution and pure IBNR functions stop with " must be numeric" for non-numeric input, and all of them treat lengths that do not recycle as an error. GammaCappedMean(), LNormCappedMean(), IGamma() and the ILF functions used to recycle them with a warning. Results for valid input are unchanged. o PureIBNRGamma() and PureIBNRLNorm(): one period with several parameter values or valuation dates gives the right ratios on every row; rows after the first used to repeat the first row's ratios. o New vignette "Simulating claims with simulate_claims()". Help pages link related functions, and internal objects are hidden from the index. Vignette typos are corrected. Changes in Version 0.2.0 o Fewer dependencies: rmarkdown, shinybusy, data.table, scales, shinyjs, MASS and Pareto are no longer imported. The Gamma maximum likelihood fit and the piecewise Pareto fit of the distribution fitting tool are now computed with base R and give the same results as before. o The database drivers of the GLM fitting tool (DBI, RMySQL, RSQLite, RODBC, RPostgreSQL) moved from Imports to Suggests, so they are no longer installed with the package. The tool shows a message naming the package to install when a database type is selected whose driver is missing. o The GLM and distribution fitting tools raise the shiny upload limit only while they run and restore the option when they stop; loading the package no longer changes options(shiny.maxRequestSize). o GammaCappedMean() and LNormCappedMean() are computed with pgamma() and pnorm() directly: no NaN for large shapes (gamma() overflow) and no loss of precision for caps far above or far below the mean. Results elsewhere are unchanged up to floating point. o ParetoCappedMean() with shape == 1 uses the exact limit scale * (1 + log(cap / scale)) instead of averaging shape +/- 0.0001; values change by less than 1e-6 relative to before. o An infinite cap now gives the uncapped mean (or Inf when the mean is infinite) in the capped mean, exposure curve and ILF functions, instead of NaN. o Distribution fitting tool: the mean excess function plot now shows the empirical mean excess of the claims (mean of the claims above each point, less the point) instead of a mean over the plotted grid points; fitting errors are shown in the app instead of the console; the severity cdf plots are labelled correctly when the log scale is off. o GLM fitting tool: model fitting errors are shown in the app. o IGamma() documentation corrected: it is the upper incomplete gamma function. o Added examples to run_shiny_glm_fitting_tool() and run_shiny_distribution_fitting_tool(), and a testthat suite. o Claims simulator: redesigned interface with light, dark and system themes; a Report tab that shows the full report inside the app; a Compare tab that keeps up to six runs with side-by-side metrics and a return-period chart; save and load of settings, and three built-in examples. o Claims simulator inputs: clearer parameter labels, the implied mean and standard deviation of each distribution shown while typing, number boxes for the simulations and seed, and checks that name any missing or invalid setting before a run (including whole-number claim counts and increasing Pareto slice thresholds). o New option to truncate Normal claim sizes at zero, so no claim is negative (argument sevTruncateAtZero of simulate_function()). o simulate_function() also returns the gross total claims before reinsurance, works outside a Shiny session, reuses running parallel workers and has examples. o The simulation report is built in R and no longer needs pandoc or rmarkdown. It adds gross, ceded and net figures, layer metrics, simulation accuracy, claim frequency and return periods, and follows the light or dark theme. TVaR now averages exactly the worst share of simulations. o Shiny's built-in busy indicators replace the shinybusy package in the simulator and the GLM fitting tool. o simulate_function() checks every distribution parameter against its range (e.g. Poisson mean at least 0, Binomial probability between 0 and 1, positive Gamma, Exponential and Pareto parameters) and checks that deductibles, the cap and reinstatements are not negative and that limits are positive, instead of failing or returning NA part-way through a run. The Normal mean and the Log-Normal mu may now be negative, and the implied moments are shown for them. o simulate_function() random numbers: every chunk of simulations has its own L'Ecuyer-CMRG stream, so a run gives the same results in sequence and in parallel, and a fixed seed no longer changes the caller's random number stream. Results for a given seed differ from earlier versions. o simulate_function() is faster: Pareto slices are drawn in one step; when nothing acts on individual claims, each year's total is drawn at once for Normal, Gamma, Exponential and fixed severities; with the new argument gross = FALSE and an each-and-every-loss layer only the claims that reach the layer are drawn. The chunk size adapts to the expected number of claims (new default chunk_size = NULL), which keeps memory use flat for high claim frequencies. The new argument shortcuts = FALSE turns the shortcuts off. o simulate_function() has defaults for every optional argument, a progress argument for progress reporting, and no longer calls Shiny itself. o The Normal severity has its own parameter ids in the simulator, so values no longer carry over between the Normal and the Log-Normal. Settings files saved by earlier versions still load. o Distribution fitting tool: redesigned interface in the style of the simulator, with light, dark and system themes (system by default), summary tiles, result tables that mark the best fit, and charts that follow the theme. Messages replace errors when a column cannot be used, and the column lists default to likely count, amount and weight columns. o Distribution fitting tool data upload: decimal comma option, thousands separators such as "1,234.5" read as numbers, a UTF-8 byte order mark no longer ends up in the first column name, column names are kept as in the file, and the preview is capped at 10,000 rows. o Distribution fitting tool fixes: weighted frequency fits keep each count with the weight of its own row, and the weighted choice is fixed when the analysis runs; the mean, variance and suggestion use the weights; claim counts and weights must be whole numbers (non-integer counts gave a meaningless Negative Binomial fit). The Kolmogorov-Smirnov figures are now the distance of stats::ks.test() in every tab (before, a scaled statistic based on rank / (n + 1)). The single Pareto cdf is zero below its threshold instead of negative. The sliced LogNormal body allows a negative mu (claims below 1 were fitted with mu held at 0.0001). The Gamma fit no longer fails on small whole numbers or claims far below 1. Severity cdfs of claims below 1,000 are drawn on a fine grid instead of whole numbers, and the log scale uses a log axis. o GLM fitting tool: redesigned interface in the style of the simulator, with light, dark and system themes (system by default); CSV separator, decimal and quote options; links offered per family with the family's default; column buttons that add terms to the formula; a coefficient table with relativities or odds ratios; tiles for AIC, deviance explained and dispersion; and download buttons that appear once a model is fitted. o GLM fitting tool fixes: an offset can be the log of an exposure column (the column was always used raw, so an exposure gave a wrong model); the actual against predicted chart uses the fitted model's columns, divides by the exposure only when it is one, weighs rows by the weights, and offers bands of equal counts. A stored model keeps the AIC, family, link and offset of the model it was fitted with (before, the AIC of whatever was fitted last was shown next to the saved formula) and marks the lower AIC when the models are comparable. Predictions no longer fail on a factor level found only in rows the fit left out. Fit warnings are shown instead of hidden, text binomial responses are read as factors, "." stands for every other column, and import errors show the actual error in a dialog that can be closed. o GLM fitting tool settings file: only the import options and model choices are kept, never the database password; loading checks the file and applies the column choices once the data is imported. Files saved by earlier versions still load. o Distribution fitting tool sliders: slicing points start at the 75th and 95th percentiles with a fine step, moving the first past the second moves only the second, and piecewise Pareto thresholds start at the 50th, 75th, 87.5th, ... percentiles and are kept when the number of thresholds changes. o Claims simulator: up to six Pareto slices, added with an Add slice button and removed with a button on each slice; removing a slice moves the later slices up. The switch and the number-of-slices list are gone. Settings files saved with the old switch still load. o New simulate_claims(): a simpler interface to simulate_function() with short argument names (n_sims, frequency, severity_params, eel_layer, agg_limit, ...), distributions chosen by name in any case, parameters that may be named, and defaults for every optional feature. o ParetoCappedMean() now returns the cap when it is at or below the scale (it gave wrong values, 0 or NaN before), which also fixes ExposureCurvePareto() and ILFPareto() for small limits, and it stays accurate for shapes very close to 1. o The sliced Gamma-Pareto and LogNormal-Pareto functions work with vectors of parameters (extra values were silently dropped, and the exposure curve could return wrong values). qSlicedGammaPareto() and qSlicedLNormPareto() stay accurate for probabilities very close to 1. IGamma() no longer returns Inf for large shapes when the result is finite. o simulate_claims() checks that gross, shortcuts, parallel and truncate_at_zero are a single TRUE or FALSE, and gives a clearer error when distribution parameters mix named and unnamed values. o GLM fitting tool: the actual against predicted chart codes a binomial response as glm() does, so a text response with more than two values shows the share of responses other than the first value, and an all-TRUE logical response is no longer treated as failures. The app says which value it takes as failure when a text response has more than two values. o GLM fitting tool: the download section explains that the saved model refers to its data as model_data, so update() needs the data assigned to model_data or passed as data =. o Distribution fitting tool: the sliced Pareto table note says that the alpha of the layer between the slicing points is a least-squares fit; only the tail alphas are maximum likelihood estimates. o Claims simulator: a failed run keeps the previous results, downloads and results tabs, and shows the error. o Claims simulator: the app restores the user's future plan when the session ends or a run fails, and only shuts down workers it started. o Seeds outside the integer range are rejected with a clear message, and a fixed seed gives the same results whatever the caller's RNGkind(). o Claims simulator: the number of simulations input accepts 1 to 10,000,000, the same range as the validation. o bslib 0.9.0 or later is required. Changes in Version 0.1.6 o Updated the shiny simulation tool. Changes in Version 0.1.5 o Added database name in inputs of glm database o Increased the maximum csv file size for glm builder and distribution fitting to 64gb o Fixed bug loading inputs for GLM builder o Added piecewise pareto fit to distribution fitting tool Changes in Version 0.1.4 o Added port selection for sql and prioritised csv input in Shiny glm fitting tool. o Added distribution fitting tool Changes in Version 0.1.3 o Added Shiny glm fitting tool. Changes in Version 0.1.2 o Added shiny simulation tool. Changes in Version 0.1.1 o Updates a dependency to the rmarkdown package. Changes in Version 0.1.0 o First official release of the package on CRAN. The accompanying articles are listed in the package description.