diff --git a/TurTLE/TEST.py b/TurTLE/TEST.py
index 46573aea6fe33f006f9c7d8168ad632b73e55f61..59757f6461416a31a4afe5936ecf21ab571a7f26 100644
--- a/TurTLE/TEST.py
+++ b/TurTLE/TEST.py
@@ -188,6 +188,7 @@ class TEST(_code):
             scal_rspace_stats = []
             if self.dns_type in ['Gauss_field_test']:
                 vec_spectra_stats.append('velocity')
+                vec_spectra_stats.append('k*velocity')
                 vec4_rspace_stats.append('velocity')
                 tens_rspace_stats.append('velocity_gradient')
                 scal_rspace_stats.append('velocity_divergence')
diff --git a/TurTLE/test/test_Gaussian_field.py b/TurTLE/test/test_Gaussian_field.py
index 149073e7c1abe931368df1a026ef8f02ac4bc070..c1622c0a76432ba5ca16e192763b007ddfd76146 100644
--- a/TurTLE/test/test_Gaussian_field.py
+++ b/TurTLE/test/test_Gaussian_field.py
@@ -19,31 +19,32 @@ except:
 def main():
     c = TEST()
     # size of grid
-    n = 256
+    n = 1024
     slope = -5./3.
-    k_cutoff = 30.
+    k_cutoff = 64.
     func = lambda k, k_c=k_cutoff, s=slope : k**s*np.exp(-k/k_c)
-    total_energy = quad(func, 1, k_cutoff*4)[0]
+    total_energy = quad(func, 0.6, k_cutoff*8)[0]
     coeff = 1./total_energy
     bin_no = 100
     rseed = int(time.time())
+    simname = 'Gaussianity_test'
 
-    c.launch(
-            ['Gauss_field_test',
-             '--nx', str(n),
-             '--ny', str(n),
-             '--nz', str(n),
-             '--simname', 'Gaussianity_test',
-             '--np', '4',
-             '--ntpp', '1',
-             '--wd', './',
-             '--histogram_bins', str(bin_no),
-             '--max_velocity_estimate', '8.',
-             '--spectrum_slope', str(slope),
-             '--spectrum_k_cutoff', str(k_cutoff),
-             '--spectrum_coefficient', str(coeff),
-             '--field_random_seed', str(rseed)] +
-             sys.argv[1:])
+    opt = c.launch(
+        ['Gauss_field_test',
+         '--nx', str(n),
+         '--ny', str(n),
+         '--nz', str(n),
+         '--simname', simname,
+         '--np', '4',
+         '--ntpp', '1',
+         '--wd', './',
+         '--histogram_bins', str(bin_no),
+         '--max_velocity_estimate', '8.',
+         '--spectrum_slope', str(slope),
+         '--spectrum_k_cutoff', str(k_cutoff),
+         '--spectrum_coefficient', str(coeff),
+         '--field_random_seed', str(rseed)] +
+         sys.argv[1:])
     plot_stuff(c.simname, total_energy = total_energy)
     return None
 
@@ -82,6 +83,7 @@ def plot_stuff(simname, total_energy = 1.):
     f_vel = hist_vel / np.sum(hist_vel, axis=0, keepdims=True).astype(float) / velbinsize
 
     print('Energy analytically: {}'.format(total_energy))
+    print(np.sum(energy*np.arange(len(energy))**2))
     print('Energy sum: {}'.format(np.sum(energy*df['kspace/dk'][()])))
     print('Moment sum: {}'.format(df['statistics/moments/velocity'][0,2,3]/2))
     print('Velocity variances: {}'.format(trapz(vel[:,None]**2*f_vel, vel[:,None], axis=0)))
@@ -101,6 +103,17 @@ def plot_stuff(simname, total_energy = 1.):
             df['statistics/moments/velocity_divergence'][0, 2]))
     print('Gradient second moment is: {0}'.format(
             df['statistics/moments/velocity_gradient'][0, 2].mean()))
+
+    print('----------- k2-premultiplied spectrum -----------')
+    k2func = lambda k, k_c=k_cutoff, s=slope : k**(2+s)*np.exp(-k/k_c)
+    k2sum_analytic = quad(k2func, 0, k_cutoff*20)[0]
+    print('Analytically: {}'.format(k2sum_analytic))
+    k2spec_trace = (
+            df['statistics/spectra/k*velocity_k*velocity'][..., 0, 0]
+            + df['statistics/spectra/k*velocity_k*velocity'][..., 1, 1]
+            + df['statistics/spectra/k*velocity_k*velocity'][..., 2, 2])
+    print('Energy sum: {}'.format(np.sum(k2spec_trace*df['kspace/dk'][()])))
+
     df.close()
     return None
 
diff --git a/cpp/full_code/Gauss_field_test.cpp b/cpp/full_code/Gauss_field_test.cpp
index 6822b6d8c02f87a532ffb0d0f63ed9bc767a8564..faf08f4a731646212330af30d7297ac63c80ce6e 100644
--- a/cpp/full_code/Gauss_field_test.cpp
+++ b/cpp/full_code/Gauss_field_test.cpp
@@ -144,6 +144,14 @@ int Gauss_field_test<rnumber>::do_work(void)
             this->vector_field,
             this->scalar_field);
 
+    /// compute integral of premultiplied energy spectrum
+    this->kk->cospectrum<rnumber, THREE>(
+        this->vector_field->get_cdata(),
+        stat_group,
+        "k*velocity_k*velocity",
+        0,
+        2.);
+
     /// compute basic statistics of Gaussian field
     this->vector_field->compute_stats(
             this->kk,
diff --git a/cpp/kspace.cpp b/cpp/kspace.cpp
index 694e188c723f0be5e8fac9d51b7d87c118ebb691..9e1f68e0a73080f56a399bb7a32932ff16fa71e8 100644
--- a/cpp/kspace.cpp
+++ b/cpp/kspace.cpp
@@ -783,6 +783,7 @@ void kspace<be, dt>::cospectrum(
             {
                 double* spec_local = spec_local_thread.getMine();
                 int tmp_int = int(sqrt(k2) / this->dk)*ncomp(fc)*ncomp(fc);
+                
                 for (hsize_t i=0; i<ncomp(fc); i++)
                 for (hsize_t j=0; j<ncomp(fc); j++){
                     spec_local[tmp_int + i*ncomp(fc)+j] += pow(k2, wavenumber_exp/2.)*