AGGREGATE: Fixed a bug with MEDIAN vs. MODE=ADDVARIABLES
[pspp] / src / language / stats / aggregate.c
index 7430b819e90a2889aa4cb57be6575b180293335a..b2132ec71a99f13a0276ea66da3c35c2be210d85 100644 (file)
@@ -1003,21 +1003,22 @@ dump_aggregate_info (const struct agr_proc *agr, struct casewriter *output, cons
            break;
          case MEDIAN:
            {
-             struct casereader *sorted_reader;
-             struct percentile *median = percentile_create (0.5, i->cc);
-              struct order_stats *os = &median->parent;
-
-             sorted_reader = casewriter_make_reader (i->writer);
-
-             order_stats_accumulate (&os, 1,
-                                     sorted_reader,
-                                     i->weight,
-                                     i->subject,
-                                     i->exclude);
-
-             v->f = percentile_calculate (median, PC_HAVERAGE);
-
-             statistic_destroy (&median->parent.parent);
+             if ( i->writer)
+               {
+                 struct percentile *median = percentile_create (0.5, i->cc);
+                 struct order_stats *os = &median->parent;
+                 struct casereader *sorted_reader = casewriter_make_reader (i->writer);
+                 i->writer = NULL;
+
+                 order_stats_accumulate (&os, 1,
+                                         sorted_reader,
+                                         i->weight,
+                                         i->subject,
+                                         i->exclude);
+                 i->dbl[0] = percentile_calculate (median, PC_HAVERAGE);
+                 statistic_destroy (&median->parent.parent);
+               }
+             v->f = i->dbl[0];
            }
            break;
          case SD: