Index: trunk/ppStack/src/ppStackCombineFinal.c
===================================================================
--- trunk/ppStack/src/ppStackCombineFinal.c	(revision 23768)
+++ trunk/ppStack/src/ppStackCombineFinal.c	(revision 23769)
@@ -48,11 +48,20 @@
 
     // Sum covariance matrices
+    double sumWeights = 0.0;            // Sum of weights
     for (int i = 0; i < options->num; i++) {
         if (options->inputMask->data.U8[i]) {
             psFree(options->covariances->data[i]);
             options->covariances->data[i] = NULL;
+            continue;
         }
+        psKernel *covar = options->covariances->data[i]; // Covariance matrix
+        float weight = options->weightings->data.F32[i]; // Weight to apply
+        psBinaryOp(covar->image, covar->image, "*", psScalarAlloc(weight, PS_TYPE_F32));
+        sumWeights += weight;
     }
-    options->outRO->covariance = psImageCovarianceAverage(options->covariances);
+    pmReadout *outRO = options->outRO;  // Output readout
+    outRO->covariance = psImageCovarianceSum(options->covariances);
+    psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/",
+               psScalarAlloc(sumWeights, PS_TYPE_F32));
     psFree(options->covariances); options->covariances = NULL;
     psImageCovarianceTransfer(outRO->variance, outRO->covariance);
