+static void
+updateit (void *user_data,
+ enum mv_class exclude,
+ const struct variable *wv,
+ const struct variable *catvar UNUSED,
+ const struct ccase *c,
+ void *aux1, void *aux2)
+{
+ struct descriptive_data *dd = user_data;
+
+ const struct variable *varp = aux1;
+
+ const union value *valx = case_data (c, varp);
+
+ struct descriptive_data *dd_total = aux2;
+
+ double weight;
+
+ if ( var_is_value_missing (varp, valx, exclude))
+ return;
+
+ weight = wv != NULL ? case_data (c, wv)->f : 1.0;
+
+ moments1_add (dd->mom, valx->f, weight);
+ if (valx->f < dd->minimum)
+ dd->minimum = valx->f;
+
+ if (valx->f > dd->maximum)
+ dd->maximum = valx->f;
+
+ {
+ const struct variable *var = dd_total->var;
+ const union value *val = case_data (c, var);