Index: trunk/ppStack/src/ppStackCombineFinal.c
===================================================================
--- trunk/ppStack/src/ppStackCombineFinal.c	(revision 27695)
+++ trunk/ppStack/src/ppStackCombineFinal.c	(revision 27696)
@@ -96,25 +96,5 @@
     // Sum covariance matrices
     if (covariances) {
-        double sumWeights = 0.0;            // Sum of weights
-        for (int i = 0; i < options->num; i++) {
-            if (options->inputMask->data.U8[i]) {
-                psFree(covariances->data[i]);
-                covariances->data[i] = NULL;
-                continue;
-            }
-            psKernel *covar = covariances->data[i]; // Covariance matrix
-            if (!covar) {
-                continue;
-            }
-            float weight = options->weightings->data.F32[i]; // Weight to apply
-            psBinaryOp(covar->image, covar->image, "*", psScalarAlloc(weight, PS_TYPE_F32));
-            sumWeights += weight;
-        }
-        if (sumWeights > 0.0) {
-            outRO->covariance = psImageCovarianceSum(covariances);
-            psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/",
-                       psScalarAlloc(sumWeights, PS_TYPE_F32));
-            psImageCovarianceTransfer(outRO->variance, outRO->covariance);
-        }
+        outRO->covariance = psImageCovarianceAverageWeighted(covariances, options->weightings);
     } else {
         outRO->covariance = psImageCovarianceNone();
