diff --git a/ChangeLog b/ChangeLog
index 59d29a5893ca0ee06e10861ba8c42aeed3a5331b..52fc0d27613cf347815c756e833d2aaf1bd1f0cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 
 	* Version 1.6.8 released
 
+2015-03-19  Uwe Schulzweida
+
+	* remapycon:  correct weights only for norm_opt=fracarea
+
 2015-03-18  Uwe Schulzweida
 
 	* expr: added support for logical operators <, >, <=, >=, !=, ==
diff --git a/src/expr.c b/src/expr.c
index 50b038d26cc652f8439283f9c4d4c6c8eb8bf038..d571136a3b447afad3e785ea65be4b9fe00e4a31 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -379,6 +379,30 @@ nodeType *expr_var_var(int oper, nodeType *p1, nodeType *p2)
 	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = POW(idat1[i], idat2[i]);
 	  else         for ( i=0; i<ngp; ++i ) odat[i] = pow(idat1[i], idat2[i]);
 	  break;
+	case '<':
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPLT(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPLT(idat1[i], idat2[i]);
+	  break;
+	case '>':
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPGT(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPGT(idat1[i], idat2[i]);
+	  break;
+	case LE:
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPLE(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPLE(idat1[i], idat2[i]);
+	  break;
+	case GE:
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPGE(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPGE(idat1[i], idat2[i]);
+	  break;
+	case NE:
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPNE(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPNE(idat1[i], idat2[i]);
+	  break;
+	case EQ:
+	  if ( nmiss ) for ( i=0; i<ngp; ++i ) odat[i] = MVCOMPEQ(idat1[i], idat2[i]);
+	  else         for ( i=0; i<ngp; ++i ) odat[i] =   COMPEQ(idat1[i], idat2[i]);
+	  break;
 	default:
 	  cdoAbort("%s: operator %c unsupported!", __func__, oper);
           break;
diff --git a/src/remap_conserv.c b/src/remap_conserv.c
index 0750569dcc680debda0d4258298400d73ebcec10..c13278c74fcf674a6f9a3eb11dc9cab1c9eeecfb 100644
--- a/src/remap_conserv.c
+++ b/src/remap_conserv.c
@@ -995,7 +995,8 @@ void remap_weights_conserv(remapgrid_t *src_grid, remapgrid_t *tgt_grid, remapva
       for ( n = 0; n < num_weights; ++n )
 	partial_weights[n] = partial_areas[n] / tgt_area;
 
-      correct_weights((unsigned)num_weights, partial_weights);
+      if ( rv->norm_opt == NORM_OPT_FRACAREA )
+	correct_weights((unsigned)num_weights, partial_weights);
 
       for ( n = 0; n < num_weights; ++n )
 	partial_weights[n] *= tgt_area;