diff --git a/data-access/engine/src/vlkb/src/ast.cpp b/data-access/engine/src/vlkb/src/ast.cpp
index e01ff0163db47fa3758bccb1042c82712ba97003..616930512ce6f246e0fc41561ca4ab5da09c9778 100644
--- a/data-access/engine/src/vlkb/src/ast.cpp
+++ b/data-access/engine/src/vlkb/src/ast.cpp
@@ -116,8 +116,14 @@ int header_backup(const string& pathname, bool backup)
       if(backup)
          write_previous(hd.m_header, pathname +"hdr" + ((i>0) ? "#" + to_string(i+1)  : "") );
       else
-         cout << hd.m_header << endl;
-
+      {
+         unsigned long i = 0;
+         unsigned long hdr_len = hd.m_header.length();
+         while((i*80+80) <= hdr_len)
+         {
+            cout << hd.m_header.substr(80*i++, 80) << endl;
+         }
+      }
       // FIXME remove all explicit cout cerr to main.cpp and here use ostream&
 
    }
diff --git a/data-access/engine/src/vlkb/src/main.cpp b/data-access/engine/src/vlkb/src/main.cpp
index f044a1276de2b462ffa16dc6885a462f754e28e8..ccc7e759e3588a797350e7f47f7274e723dd43d9 100644
--- a/data-access/engine/src/vlkb/src/main.cpp
+++ b/data-access/engine/src/vlkb/src/main.cpp
@@ -366,7 +366,7 @@ int cmd_header(int argc, char * argv[])
       std::cerr
          << "Usage:  header [--backup] <pathname.fits>...\n"
          << "\n"
-         << "Prints current header or writes the header into a file with the same pathname but 'fitshdr' extension.\n"
+         << "Prints current header (one card per line) or writes the header into a file with the same pathname but 'fitshdr' extension.\n"
          << "Arguments:\n"
          << "   --backup  write current header from file 'pathname.fits' to 'pathname.fitshdr#n' where n is the HDU number.\n";
       rc = EXIT_FAILURE;