diff --git a/NEWS.md b/NEWS.md
index 2f16a4e6de4d34416102ae2cf94368ccd8f8bf7d..f5c42e3e4cd4f3cceaf313d690177f555bfef816 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,94 @@
+Announcement for Dynare 5.2 (on 2022-07-27)
+===========================================
+
+We are pleased to announce the release of Dynare 5.2.
+
+This maintenance release fixes various bugs.
+
+The Windows, macOS and source packages are already available for download at
+[the Dynare website](https://www.dynare.org/download/).
+
+All users are strongly encouraged to upgrade.
+
+This release is compatible with MATLAB versions ranging from 8.3 (R2014a) to
+9.12 (R2022a), and with GNU Octave version 6.4.0 (under Windows).
+
+Note for macOS users with an Apple Silicon processor, and who are also MATLAB
+users: the official MATLAB version for use on those processors is still the
+Intel version (running through Rosetta 2), so the official Dynare package for
+download on our website is built for Intel only. However, since Mathworks has
+released a beta version of MATLAB for Apple Silicon, we created a beta package
+of Dynare that you can try with it. See this forum thread for more details:
+https://forum.dynare.org/t/testers-wanted-release-of-dynare-5-x-beta-for-apple-silicon-m1-m2-chips/20499
+
+Here is a list of the problems identified in version 5.1 and that have been
+fixed in version 5.2:
+
+* Problems with the `steady_state` operator:
+  + if a `steady_state` operator contained an algebraic expression appearing
+    multiple times in the model and sufficiently complex to trigger the
+    creation of a temporary term, then the result of the operator would be
+    wrong (the operator was essentially ignored)
+  + if a `steady_state` operator contained a call to an external function, then
+    the result of the operator would be wrong (the operator was essentially
+    ignored). A proper fix to this problem would require substantial
+    architectural changes, so for now it is forbidden to use an external
+    function inside a `steady_state` operator
+* Pruning in particle filtering at order 2 was not using the exact same formula
+  as the original Kim et al. (2008) paper. A second-order term entered the
+  cross-product between states and shocks, where it should have been a
+  first-order term. This however would not lead to explosive trajectories in
+  practice
+* The `simul_replic` option of the `stoch_simul` command would not store the
+  binary file in the `Output` folder
+* Problems with Ramsey policy (`ramsey_model`/`ramsey_policy` commands):
+  + steady state files would not work when auxiliary variables included
+    Lagrange multipliers
+  + for linear competitive equilibrium laws of motion, welfare evaluated at
+    higher order was erroneously equated to steady state welfare
+* The `discretionary_policy` command would not always correctly infer the
+  number of instruments and equations, leading to spurious error messages
+* Perfect foresight simulations of purely forward or backward models would
+  crash if complex numbers were encountered
+* When using both `block` and `bytecode` options of the `model` block, if the
+  model was such that a sufficiently complex algebraic expression appeared both
+  in the residuals and in the derivatives, leading to the creation of a
+  temporary term, then the results could be incorrect under some circumstances
+* When using the `bytecode` option of the `model` block, leads of more than
+  +127 or lags of less than -128 were not correctly handled
+* Problems with the solver under occasionally binding constraints
+  (`occbin_solver` command):
+  + when solving the baseline regime, it would not properly handle errors like
+    Blanchard-Kahn violations
+  + the piecewise linear Kalman filter (PKF) would crash if the model solution
+    could not be computed for a parameter draw
+  + the `oo_.FilteredVariablesKStepAhead` and `oo_.UpdatedVariables`
+    MATLAB/Octave variables would contain the steady state twice
+  + the inversion filter would crash if the `filter_step_ahead` or
+    `state_uncertainty` options were requested
+  + the PKF would crash if `filter_step_ahead=1` was specified
+  + the PKF would crash if the `state_uncertainty` option was specified
+    together with the `smoother_redux` option
+  + the last regime before the system is back to normal times in the
+    two-constraints case could be wrongly set, possibly leading to wrong
+    simulations, lack of convergence or crashes
+* Problems with identification (`identification` command):
+  + with `prior_mc>1` specified, it would incorrectly display the share of rank
+    deficient Jacobians
+  + it would crash during plotting or displaying identification strength when
+    the necessary identification criteria based on moments could not be
+    computed
+* The `plot_shock_decomposition` command would crash if invalid field names
+  were encountered
+* The `shock_decomposition` command would not pass specified initial dates to
+  generated plots
+* Various pathological cases encountered in steady state finding could lead to
+  a crash
+* The `solve_algo=0` option of the `steady` command would not honor `tolx`
+* In the `dynare_sensitivity` command, stability mapping would not correctly
+  honor the prior bounds
+
+
 Announcement for Dynare 5.1 (on 2022-04-06)
 ===========================================