diff --git a/pub/src/manip.cpp b/pub/src/manip.cpp
index d71a75ef69a481af318da7cb07ab2fef06ab6b74..43908b9e318ad872062c37b180c3ed97bd311b30 100644
--- a/pub/src/manip.cpp
+++ b/pub/src/manip.cpp
@@ -954,6 +954,8 @@ void NManip::FilMerge( const string& opts )
     fout->xco = fin->xco;
     fout->yco = fin->yco;
     fout->ZCo = fiter()->ZCo;
+    if ( POlc fc = P2C(fin) )
+        P2C(fout)->PCo = fc->PCo;
     while ( fin = fiter() ){
         if ( fin->xco != fout->xco )
             throw "different x coordinates";
@@ -964,6 +966,9 @@ void NManip::FilMerge( const string& opts )
         for ( uint i=0; i<fout->ZCo.size(); ++i )
             if ( fin->ZCo[i] != fout->ZCo[i] )
                 throw "different z"+S(i)+" coordinate";
+        if ( POlc fc = P2C(fin) )
+            if ( fc->PCo.size() != P2C(fout)->PCo.size() )
+                throw "different numer of curve parameters";
     }
 
     // check RPar, and prepare move to z if they differ: