diff --git a/CREATE_TGZ b/CREATE_TGZ
index 9f31b5fcd000fb15f899903141f858300cefc2fe..8b44f180549db6a8defd3a1b0443dd0f502bc5b1 100755
--- a/CREATE_TGZ
+++ b/CREATE_TGZ
@@ -1,11 +1,15 @@
-# TEMP: beim nächsten Mal: shared_ptr.hpp mitverteilen
-
-
-
-
-# export A=frida2-
-rm -f -r $A
+# resynchronize
+upgit
+dngit
+rm *~
+rm */*~
+rm */*/*~
+# copy everything
+export A=frida2-#<yymmdd>
+mkdir $A
 cp -r pub $A
-cd $A; make maintainer-clean; cd ..
-upgit # to synchronize
+# cleanup and package
+cd $A/pub; make maintainer-clean;
+ls src # => check that .o have disappeared
+up; up
 tar czv -h -f /io/$A.tgz $A/*
diff --git a/pub/src/curve.cpp b/pub/src/curve.cpp
index d0aeaab31f739e22cfa9d2b71f6264d4d2cc2caf..cf5615669f6f1842abaeaf0094e5a1c0c5f24c68 100644
--- a/pub/src/curve.cpp
+++ b/pub/src/curve.cpp
@@ -561,6 +561,8 @@ void NCurveFile::Fit( bool _allow_slow_conv )
             if ( fc->ProtectedScans.contains( j ) )
                 continue;
             data.j = j;
+            if( fiter.size()>1 )
+                printf("%3d", data.k);
             printf("%3d", j);
             D = &(fd->VS[j]);
             C = &(fc->VC[j]);
@@ -579,7 +581,6 @@ void NCurveFile::Fit( bool _allow_slow_conv )
                     Par[ipf++] = C->P[ip];
             }
                                         
-            printf( " [%d*%zu]", npfree, D->size() );
             if ( NFitTune::nPrint ) printf("\n");
 
             data.timeout = time(NULL) + NFitTune::maxtime;
@@ -588,7 +589,6 @@ void NCurveFile::Fit( bool _allow_slow_conv )
             if( control.info==10 )
                 throw string( "exception in fit function" );
 
-            printf( " %4d", control.nfev);
             for ( uint i=0; i<npfree; i++ )
                 printf(" %12g", Par[i]);
 
@@ -607,7 +607,8 @@ void NCurveFile::Fit( bool _allow_slow_conv )
             // mean deviation:
             C->Quality[2] = SQR(control.fnorm) / nd;
 
-            printf( " (%9.7g)", C->Quality[NFitTune::mFitMetric] );
+            printf( " (%3d->%9.7g)",
+                    control.nfev, C->Quality[NFitTune::mFitMetric] );
 
             // print status:
             printf( "%s\n", lm_shortmsg[ control.info ] );
diff --git a/pub/src/func.cpp b/pub/src/func.cpp
index d6dd979115a42f3b73dfe0f11e06238ff7d23d15..4bf21c8320c04fafb4cc41096fb1dd0a43ef043a 100644
--- a/pub/src/func.cpp
+++ b/pub/src/func.cpp
@@ -118,12 +118,29 @@ double func_gaussnn (double x, double s) { // Gauss not normalized
     return s==0 ? 0 : exp(-x*x/(2*s*s)); }
 double func_cauchy (double x, double s) {
     return s==0 ? 0 : 2*fabs(s)/twopi/(x*x+s*s); }
-double func_kwwc( double v, double a){
+double func_kwwc( double v, double a ){
     if( a<0.1 || a>2.0 ) return 0;
     return kwwcf( (float)v, (float)a ); }
-double func_kwws( double v, double a){
+double func_kwws( double v, double a ){
     if( a<0.1 || a>2.0 ) return 0;
     return kwwsf( (float)v, (float)a ); }
+double func_skww( double w, double _b, double _wc ){
+    // KWW S(q,w) with round-off at wc
+    static double b=0, wc=0, sig2=0, amp=0;
+    if( _b<0.1 || _b>2.0 || _wc<=0 ) return 0;
+    if( _b!=b || _wc!=wc ){
+        b = _b;
+        wc = _wc;
+        sig2 = - SQR(wc)*2e-4 /
+            ( log( kwwcf( (float)wc*(1+1e-4), (float)b ) ) -
+              log( kwwcf( (float)wc*(1-1e-4), (float)b ) ) );
+        amp =  kwwcf( (float)wc, (float)b ) * exp( SQR(wc)/2/sig2 );
+    }
+    if( fabs(w)>=wc )
+        return kwwcf( (float)w, (float)b );
+    else
+        return amp * exp( -SQR(w)/2/sig2 );
+}
 
 double func_ran (double v, double a) { 
     // a random number between v and a :
@@ -275,6 +292,7 @@ void NFunctions::Register(void) {
     fmap.insert(make_pair(string("cauchy"),CFunc("cauchy",  func_cauchy)));
     fmap.insert(make_pair(string("kwwc"), CFunc("kwwc",func_kwwc)));
     fmap.insert(make_pair(string("kwws"), CFunc("kwws",func_kwws)));
+    fmap.insert(make_pair(string("skww"), CFunc("skww",func_skww)));
 
     fmap.insert(make_pair(string("ran"),  CFunc("ran",  func_ran)));
 
diff --git a/pub/src/func.h b/pub/src/func.h
index 0216918bf189a7e9fe7f181d368ea57769fb26e8..9a54532bff0f4ffa221c3114dd23b724753d2128 100644
--- a/pub/src/func.h
+++ b/pub/src/func.h
@@ -102,8 +102,9 @@ extern double func_xor(double,double);
 extern double func_mod(double,double);
 extern double func_idiv(double,double);
 extern double func_over(double,double);
-extern double func_kwwc( double v, double a);
-extern double func_kwws( double v, double a);
+extern double func_kwwc(double,double);
+extern double func_kwws(double,double);
+extern double func_skww(double,double,double);
 
 extern double func_in( double, vector<double> );