diff --git a/pub/lib/fsel.cpp b/pub/lib/fsel.cpp
index 0e1a9df4565bb12de762234890b8e59bea668eea..7cafb290fc4479fcbc8bccb3883c9d39eb84348a 100644
--- a/pub/lib/fsel.cpp
+++ b/pub/lib/fsel.cpp
@@ -21,13 +21,13 @@
 //**************************************************************************************************
 
 //! Returns current selection.
-const vector<int>& SFSel::sel()
+const vector<int>& SFSel::sel() const
 {
     return FSel;
 }
 
 //! Returns list of data files in current selection
-const vector<int> SFSel::selD()
+vector<int> SFSel::selD() const
 {
     vector<int> ret;
     for( int k: FSel )
@@ -37,7 +37,7 @@ const vector<int> SFSel::selD()
 }
 
 //! Returns list of curve files in current selection
-const vector<int> SFSel::selC()
+vector<int> SFSel::selC() const
 {
     vector<int> ret;
     for( int k: FSel )
@@ -47,7 +47,7 @@ const vector<int> SFSel::selC()
 }
 
 //! First selected file.
-const COlo* SFSel::sel_first()
+COlo* SFSel::sel_first() const
 {
     if( !FSel.size() )
         throw S("empty file selection");
@@ -55,7 +55,7 @@ const COlo* SFSel::sel_first()
 }
 
 //! Maximum number of scans in selected files.
-const int SFSel::nJ_max()
+int SFSel::nJ_max() const
 {
     int ret = 0;
     for( int iv: FSel )
diff --git a/pub/lib/fsel.hpp b/pub/lib/fsel.hpp
index fac7431c43e0f3755d5e98ef8f72ac1e85db44d3..6bf6d768316ca9020c98b1058dffdf4e74b1b47d 100644
--- a/pub/lib/fsel.hpp
+++ b/pub/lib/fsel.hpp
@@ -17,11 +17,11 @@ private:
     void sel_push( const vector<int>& _FSel );
 public:
     // Read file selection:
-    const vector<int>& sel();
-    const vector<int> selD();
-    const vector<int> selC();
-    const COlo* sel_first();
-    const int nJ_max();
+    const vector<int>& sel() const;
+    vector<int> selD() const;
+    vector<int> selC() const;
+    COlo* sel_first() const;
+    int nJ_max() const;
 
     // Modify file selection:
     void sel_delete();
diff --git a/pub/lib/mem.cpp b/pub/lib/mem.cpp
index f1122bd545d60a478a2175da425c1c8bf3bb3a8f..3845fbdf431b2d89ac3eb6049f78ff98f2754ef9 100644
--- a/pub/lib/mem.cpp
+++ b/pub/lib/mem.cpp
@@ -25,13 +25,13 @@
 //**************************************************************************************************
 
 //! Returns number of files in online memory.
-const int SMem::mem_size()
+int SMem::mem_size() const
 {
     return MOM.size();
 }
 
 //! Return pointer to file with index k.
-COlo* SMem::mem_get( int k )
+COlo* SMem::mem_get( int k ) const
 {
     if ( k<0 )
         throw "negative number " + S(k) + " cannot be a file index";
@@ -41,7 +41,7 @@ COlo* SMem::mem_get( int k )
 }
 
 //! Return pointer to file with index k, provided it contains data.
-COld* SMem::mem_get_D( int k )
+COld* SMem::mem_get_D( int k ) const
 {
     COld *ret = dynamic_cast<COld*>( mem_get( k ) );
     if( !ret )
@@ -50,7 +50,7 @@ COld* SMem::mem_get_D( int k )
 }
 
 //! Return pointer to file with index k, provided it contains curves.
-COlc* SMem::mem_get_C( int k )
+COlc* SMem::mem_get_C( int k ) const
 {
     COlc *ret = dynamic_cast<COlc*>( mem_get( k ) );
     if( !ret )
diff --git a/pub/lib/mem.hpp b/pub/lib/mem.hpp
index 91d377d26f85b7354a6999353599245be1e842fe..76541a360464044419181b95fe5387df9dd8c81c 100644
--- a/pub/lib/mem.hpp
+++ b/pub/lib/mem.hpp
@@ -19,10 +19,10 @@ public:
     bool overwrite;
 
     // Read from online memory:
-    COlo* mem_get  ( int k );
-    COld* mem_get_D( int k );
-    COlc* mem_get_C( int k );
-    const int mem_size();
+    COlo* mem_get  ( int k ) const;
+    COld* mem_get_D( int k ) const;
+    COlc* mem_get_C( int k ) const;
+    int mem_size() const;
 
     // Modify online memory (file selection is changed accordingly):
     void mem_store( POlo&& olo, int k=-1 );