diff --git a/doc/src/Measurements.rst b/doc/src/Measurements.rst
index 0deb924b35762976959a6748a3fc4a7f8ad88e11..2eddb558e34780fe563d1fd16129b2c6853dfd54 100644
--- a/doc/src/Measurements.rst
+++ b/doc/src/Measurements.rst
@@ -22,6 +22,7 @@ Model-fitting
   Position
   PositionWin
   Photom
+  Model
 
 .. [#thresh] Pixel values also have to exceed the local detection threshold set with ``DETECT_THRESH``.
 .. [#psf_models] PSF models be computed using the |PSFEx|_ package.
diff --git a/doc/src/Model.rst b/doc/src/Model.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ecd3c3735e8c47cccf39a8fb2b7ccdeead0141a0
--- /dev/null
+++ b/doc/src/Model.rst
@@ -0,0 +1,166 @@
+.. File Model.rst
+
+.. include:: global.rst
+
+Model fitting
+=============
+
+SExtractor can fit models to the images of detected objects since version 2.8. The fit is performed by minimizing the loss function
+
+.. math::
+  :label: loss_func
+
+  \lambda(\boldsymbol{q}) = \sum_i \left(g\left(\frac{p_i - \hat{m}_i(\boldsymbol{q})}{\sigma_i}\right)\right)^2 + \sum_j \frac{q_j - \mu_j}{}
+
+with respect to components of the model parameter vector :math:`\boldsymbol{q}`. :math:`\boldsymbol{q}` comprises parameters describing the shape of the model and the model pixel coordinates :math:`\boldsymbol{x}`.
+
+The first term in :eq:`loss_func` is a modified `weighted sum of squares <http://en.wikipedia.org/wiki/Least_squares#Weighted_least_squares>`_ that aims at minimizing the residuals of the fit. :math:`p_i`, :math:`\hat{m}_i(\boldsymbol{q})` and :math:`\sigma_i` are respectively the pixel value above the background, the value of the resampled model, and the pixel value uncertainty at image pixel :math:`i`.
+:math:`g(u)` is a derivable monotonous function that reduces the influence of large deviations from the model (e.g., contamination by neighbors):
+
+.. math::
+  :label: loss_func
+
+  g(u) = \left\{
+    \begin{array}{rl}
+       u_0 \log \left(1 + \frac{u}{u_0}\right) & \mbox{if } u \ge 0,\\
+      -u_0 \log \left(1 - \frac{u}{u_0}\right) & \mbox{otherwise.}\\
+    \end{array}
+  \right.
+
+The vector :math:`\hat{\boldsymbol{m}}(\boldsymbol{q})` is obtained by convolving the high resolution model :math:`\boldsymbol{m}(\boldsymbol{q})` with the local PSF model :math:`\boldsymbol{\phi}` and applying a resampling operator :math:`\mathbf{R}(\boldsymbol{x})` to generate the final model raster at position :math:`\boldsymbol{x}` at the nominal image resolution:
+
+.. math::
+  :label: model_resampling
+
+  \hat{\boldsymbol{m}}(\boldsymbol{q}) = \mathbf{R}(\boldsymbol{x}) (\boldsymbol{m}(\boldsymbol{q})*\boldsymbol{\phi}).
+
+Levenberg-Marquardt minimization, inside a disk which diameter is scaled to include the isophotal footprint plus a 20 % margin, plus the size of the PSF model image.
+
+The models that can be fit are:
+
+- Exponential disk
+
+  .. math::
+
+      \Sigma_{\tt ExpDisk}(R) = \Sigma(0) \exp \left (- {R\over h}\right ) 
+      \label{expdisk}
+
+- S茅rsic (:math:`R^{1/n}`) spheroid (bulg)
+
+  .. math::
+
+      \Sigma_{\tt Sersic}(R) = \Sigma(0) \exp \left [- b(n)\,\left({R\over
+          R_e}\right)^{1/n}\right ] \ ,
+      \label{sersic}
+
+where, for the :raw-latex:`\cite{sersic:1968}` model, :math:`b(n)` is the solution of
+
+  .. math::
+
+      2 \gamma[2\,n,b(n)] = \Gamma(2\,n)
+      \label{bofn}
+
+  An accurate approximation for the solution for :math:`b(n)` of equation聽(bofn) is :raw-latex:`\citep{ciotti:bertin:1999}`
+
+   .. math::
+
+      b(n) = 2\,n - {1\over3} + {4\over 405\,n} + {46\over 25515\,n^2} + {131\over
+        1148175\,n^3}
+
+-  :raw-latex:`\cite{devaucouleurs48}` spheroid (bulge, eq.聽[[sersic]], with :math:`n=4`)
+
+-  Exponential disk + S茅rsic (:math:`R^{1/n}`) spheroid (bulge)
+
+-  Point source
+
+-  Background (constant)
+
+For these models, SExtractor can compute fluxes and magnitudes, as well
+as sizes (disk scale length for the disks and effective 鈥� projected
+half-light 鈥� radii for the spheroids), characteristic surface
+magnitudes, and S茅rsic index, as well as their uncertainties.
+
+The models are concentric (they assume the same center) and are all
+convolved with the PSF, given by the .psf file, which must be determined
+by first running PSFEx (see below).
+
+Unfortunately, the S茅rsic profile is very cuspy in the center for
+:math:`n>2`. To avoid huge wings in the FFTs when convolving the profile
+with the PSF, the profile is split between a 3rd order polynomial,
+analytically fit to match, in intensity and its 1st and 2nd spatial
+derivatives, the S茅rsic profile at :math:`R=4\,\rm pixels`,
+:math:`I(r) = I_0 + (r/a)^3`, which has zero first and 2nd derivative at
+the center, i.e. a homogeneous core on one hand, and a residual with
+finite extent on the other.
+
+For the fit of the spheroid component, the apparent ellipticity allowed
+is taken in the range :math:`[0.5, 2]` . This obviously forbids very
+flat spheroids to avoid confusion with a flattened disk. By allowing
+ellipticities greater than unity, SExtractor avoids dichotomies of
+position angle when the ellipticity is very low. The S茅rsic index is
+allowed values between 1 and 10.
+
+Models are measured according to the following table.
+
+.. math::
+
+   \begin{aligned}
+   \hbox{{\tt FLUX\_BACKOFFSET} or {\tt FLUXERR\_BACKOFFSET}} &\to& \hbox{background}
+   \nonumber \\
+   \hbox{{\tt DISK\_xxx}} &\to& \hbox{exponential disk} \nonumber \\
+   \hbox{{\tt SPHEROID\_SERSICN} or {\tt SPHEROID\_SERSICNERR}} &\to&
+   \hbox{S\'ersic} \nonumber \\
+   \hbox{{\tt SPHEROID\_xxx} without {\tt SPEHEROID\_SERSICN[ERR]}} &\to&
+   \hbox{de Vaucouleurs (}n=4 \hbox{ S\'ersic)} \nonumber \\ 
+   \hbox{{\tt MODEL\_xxx} only} &\to& \hbox{S\'ersic [???]} \nonumber \\
+   \hbox{{\tt SPHEROID\_xxx} and {\tt DISK\_xxx}}&\to& \hbox{S\'ersic spheroid + exponential disk [???]} \nonumber \end{aligned}
+
+Table聽[modeltriggers] should be interpreted as meaning that if one of
+the parameters given in the parameter file (e.g. default.param) includes
+the string on the left of the arrow, the model to the right of the arrow
+is triggered. For example, when including parameters that contain the
+string 鈥楳ODEL鈥�, both galaxies and stars are fit with convolutions of
+S茅rsic models with the PSF. If no SPHEROID\_xxx or DISK\_xxx parameter
+is present, but the model-fitting process is nevertheless triggered by
+the presence of other measurement parameters or relevant
+CHECKIMAGE\_TYPEs , a single component with S茅rsic profile and
+adjustable S茅rsic index :math:`n` is fitted.
+
+The number of parameters that are fit are 2 for the global center, 4 per
+model for the scale, normalization, aspect ratio and position angle,
+plus the index for the S茅rsic model. For example, fitting a S茅rsic +
+exponential disk involves a fitting 11 parameters.
+
+Experience shows that the de Vaucouleurs spheroid + exponential disk
+combination provides fairly accurate and robust fits for moderately
+resolved faint galaxies. An adjustable S茅rsic index may offer lower
+residuals on spheroids and/or well-resolved galaxies, but makes the fit
+less robust and more sensitive to PSF model errors. One might think of
+adding some mechanism to lock or unlock the S茅rsic index automatically
+in future versions of SExtractor.
+
+The measurement parameters related to model-fitting follow the usual
+SExtractor rules:
+
+Flux measurements are available in ADUs (FLUX\_xxx parameters) or
+magnitudes (MAG\_xxx parameters), Coordinates and radii are available in
+pixels or celestial units (provided that the FITS image header contains
+the appropriate WCS information).
+
+xxxMODEL\_yyy measurement parameters deal with the global fitted model,
+i.e. the sum of all components (e.g. chi-square per d.o.f. CHI2\_MODEL,
+PSF-corrected ellipticities E1/2MODEL\_IMAGE, EPS1/2 MODEL\_IMAGE).
+
+:math:`1\,\sigma` error estimates xxxERR\_yyy are provided for most
+measurement parameters; they are obtained by marginalizing the full
+covariance matrix of the fit.
+
+Since the model fitting involves convolution with the PSF, it is
+imperative to launch PSFEx before launching SExtractor. In practice, the
+sequence of operations is:
+
+#. Run SExtractor to prepare PSFEx;
+
+#. Run PSFEx to prepare model fits in SExtractor;
+
+#. Run SExtractor with model fit parameters.
diff --git a/doc/src/PositionWin.rst b/doc/src/PositionWin.rst
index eb30292a47feb7eb7dc4ddb7322901f08e5c560a..69eeb27236ff854325a3e8ba442ed0a54842f8b9 100644
--- a/doc/src/PositionWin.rst
+++ b/doc/src/PositionWin.rst
@@ -47,7 +47,6 @@ Then at each iteration :math:`t`, :math:`\overline{x_{\tt WIN}}` and :math:`\ove
    = \overline{x_{\tt WIN}}^{(t)} + 2\,\frac{\sum_{r_i^{(t)} < r_{\rm max}}
    w_i^{(t)} I_i \ (x_i  - \overline{x_{\tt WIN}}^{(t)})}
    {\sum_{r_i^{(t)} < r_{\rm max}} w_i^{(t)} I_i},\\
-   \label{eq:ywin}
    {\tt YWIN}^{(t+1)} & = & \overline{y_{\tt WIN}}^{(t+1)}
    = \overline{y_{\tt WIN}}^{(t)} + 2\,\frac{\sum_{r_i^{(t)} < r_{\rm max}}
    w_i^{(t)} I_i\ (y_i - \overline{y_{\tt WIN}}^{(t)})}
diff --git a/doc/src/conf.py b/doc/src/conf.py
index 33c89d6c1c3513f59ebf3017b0babe6ec9d8b20f..f1d81675db47992e1eee0f01710c122c213b6d56 100644
--- a/doc/src/conf.py
+++ b/doc/src/conf.py
@@ -81,7 +81,7 @@ language = None
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:
 #
-today = 'Wed Nov 22 2017'
+today = 'Wed Dec 13 2017'
 #
 # Else, today_fmt is used as the format for a strftime call.
 #