# \[ANN\] Update to TruncatedDistributions.jl

**URL:** <https://discourse.julialang.org/t/ann-update-to-truncateddistributions-jl/137729>\
**Category:** Package Announcements\
**Created:** [June 21, 2026, 12:08pm UTC](https://discourse.julialang.org/t/ann-update-to-truncateddistributions-jl/137729 "2026-06-21T12:08:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yoninazarathy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yoninazarathy/32/10086_2.png) [@yoninazarathy](https://discourse.julialang.org/u/yoninazarathy)\
**Post date:** [June 21, 2026, 12:08pm UTC](https://discourse.julialang.org/t/ann-update-to-truncateddistributions-jl/137729/1 "2026-06-21T12:08:00Z")

</div>

I’m happy to announce a substantial update to **TruncatedDistributions.jl** , now at `0.3.0`. The package has been around for a couple of years, but was fairly bare.

It now gives solid support for the **truncated multivariate normal** , has a few special tools for **univariate truncation** , and for the multivariate normal it can also **fit the parameters** for a desired mean and covariance (after truncation).

Key features at this point:

- **Box-truncated multivariate normal** as a proper distribution object (TruncatedMvNormal), truncated to a hyper-rectangle [a, b].
- **Exact moments** of the truncated MVN via Kan & Robotti recursions, with two backends (`:hcubature` and `:mvnormalcdf`) so you can trade speed against accuracy.
- **Parameter fitting** (`fit_mvnormal`): give it a target mean/covariance _after_ truncation, and it solves for the underlying MVN parameters that produce them.
- **Univariate dynamic moment matching** (`dynamic_fit_locationscale`): an ODE/homotopy method (Liquet & Nazarathy, 2015) that finds a location-scale or exponential distribution whose truncation to [a, b] hits a target mean and variance.

See the [GitHub Repo](https://github.com/Distribution-Matching/TruncatedDistributions.jl).

Cheers,  
Yoni.
