diff --git a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp
index 97a319fbd693ed2ca8fd9bc0bcd89d511e8bfa6e..daa9617073a458da977806cb0b591fbd41f98623 100644
--- a/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp
+++ b/data-access/engine/src/vlkb-obscore/src/database/SqlSchema_INSERT.cpp
@@ -1,6 +1,8 @@
 
 #include "SqlSchema_INSERT.hpp"
 
+#include <iomanip>
+#include <sstream> // to_string(int precision, double value)
 #include <string>
 #include <stdexcept>
 #include <math.h> // fabs needed
@@ -23,6 +25,14 @@ using namespace std;
 // utils
 //----------------------------------------------------------------
 
+string to_string(int precision, double value)
+{
+   stringstream stream;
+   stream << fixed << setprecision(precision) << value;
+   return stream.str();
+}
+
+
 string authPolicyToSQLEnum(string csvPolicy)
 {
    if((csvPolicy.compare("FREE") == 0) ||
@@ -147,7 +157,8 @@ string asSqlString(fitsfiles::key_values_by_type key_values, string key)
    }
 }
 
-string get_wavelen(fitsfiles::key_values_by_type key_values)
+
+string get_wavelen(int precision, fitsfiles::key_values_by_type key_values)
 {
    const double UNIT_CONVERT = 0.001; // FIXME header-card unit [mm] but ObsCore em_ is [m]
    if(key_values.doubleValues.find("WAVELEN") == key_values.doubleValues.end() )
@@ -160,17 +171,17 @@ string get_wavelen(fitsfiles::key_values_by_type key_values)
          }
          else
          {
-            return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELNTH"]);
+            return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELNTH"]);
          }
       }
       else
       {
-         return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELENG"]);
+         return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELENG"]);
       }
    }
    else
    {
-      return to_string(UNIT_CONVERT * key_values.doubleValues["WAVELEN"]);
+      return to_string(precision, UNIT_CONVERT * key_values.doubleValues["WAVELEN"]);
    }
 }
 
@@ -202,9 +213,11 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/
    struct Vertices icrsVerts = legacy::calcVertices(hdu.m_header, "ICRS");
 #else
    const string VELOLSRK{"System=VELO,StdOfRest=LSRK,Unit=km/s"};
+   const string WAVELSRK{"System=WAVE,StdOfRest=LSRK,Unit=m"};
+   // FIXME StdOfRest <--- SPECSYS
 
    vector<struct Bounds> galBounds  = calc_bounds(hdu.m_header, "GALACTIC", VELOLSRK);
-   vector<struct Bounds> icrsBounds = calc_bounds(hdu.m_header, "ICRS", VELOLSRK);
+   vector<struct Bounds> icrsBounds = calc_bounds(hdu.m_header, "ICRS", WAVELSRK);
 
    vector<point2d> galVerts  = calc_skyvertices(hdu.m_header, "GALACTIC");
    vector<point2d> icrsVerts = calc_skyvertices(hdu.m_header, "ICRS");
@@ -347,14 +360,16 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/
 
    // obscore - spectral axis
 
+   const int EM_PRECISION{10}; // nanometers
+
    if(icrsBounds.size() >= 3) // 3D cubes
    {
       //obscoreRow[em_min]        = to_string(galBounds[2].low);
       //obscoreRow[em_max]        = to_string(galBounds[2].up);
-      obscoreRow[em_min]        = to_string(icrsBounds[2].low); // FIXME must be Wave-length in [m]
-      obscoreRow[em_max]        = to_string(icrsBounds[2].up);  // FIXME must be Wave-length in [m]
+      obscoreRow[em_min]        = to_string(EM_PRECISION, icrsBounds[2].low);
+      obscoreRow[em_max]        = to_string(EM_PRECISION, icrsBounds[2].up);
 
-      obscoreRow[em_res_power]  = asSqlString(hdu.key_values, "CDELT3");
+      obscoreRow[em_res_power]  = "NULL";//asSqlString(hdu.key_values, "CDELT3");
       obscoreRow[em_xel]        = asSqlString(hdu.key_values, "NAXIS3");
    }
    else if(icrsBounds.size() == 2) // 2D images
@@ -362,7 +377,7 @@ void SqlSchema_INSERT::appendRow(/*const int hid, const int sid,*/
       //if(!strcmp(survey.survSpecies.c_str(), "Continuum"))
       //   dem_min = dem_max = 0.0; // FIXME transtod(psurv->transition);
 
-      obscoreRow[em_min] = get_wavelen(hdu.key_values);
+      obscoreRow[em_min] = get_wavelen(EM_PRECISION, hdu.key_values);
       obscoreRow[em_max] = obscoreRow[em_min];
       obscoreRow[em_res_power] = "NULL";
       obscoreRow[em_xel]       = "NULL";