diff --git a/CMakeLists.txt b/CMakeLists.txt
index d5ea58c1a..0889c79bf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,7 +71,7 @@ message (STATUS "******************************************************")
 
 include (set_build_type)
 # RC 0 or omitted is a development build, GA is a General Availability release build
-set_build_type (RC 3)
+set_build_type (RC 4)
 set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
 
 #
diff --git a/lib/echosim.f90 b/lib/echosim.f90
index 20d8354b4..bc15b0e98 100644
--- a/lib/echosim.f90
+++ b/lib/echosim.f90
@@ -31,7 +31,7 @@ program echosim
   call getarg(2,arg)
   read(arg,*) fdop                       !Doppler shift (Hz)
   call getarg(3,arg)
-  read(arg,*) fspread                    !Frequency spread (Hz) (JHT Lorentzian model)
+  read(arg,*) fspread             !Frequency spread (Hz) (JHT Lorentzian model)
   call getarg(4,arg)
   read(arg,*) nfiles                     !Number of files
   call getarg(5,arg)
@@ -45,6 +45,9 @@ program echosim
   if(snrdb.gt.90.0) sig=1.0
   dphi=twopi*(f0+fdop)*dt
 
+  write(*,1000)
+1000 format('   N   f0     fDop fSpread   SNR  File name'/51('-'))
+
   do ifile=1,nfiles
      phi=0.d0
      do i=0,NWAVE-1
diff --git a/widgets/astro.cpp b/widgets/astro.cpp
index e5f338c64..8e0ec8529 100644
--- a/widgets/astro.cpp
+++ b/widgets/astro.cpp
@@ -55,7 +55,6 @@ Astro::Astro(QSettings * settings, Configuration const * configuration, QWidget
 
 Astro::~Astro ()
 {
-  ui_->cbDopplerTracking->setChecked (false);
   Q_EMIT tracking_update ();
   if (isVisible ()) write_settings ();
 }
@@ -69,6 +68,8 @@ void Astro::closeEvent (QCloseEvent * e)
 void Astro::read_settings ()
 {
   SettingsGroup g (settings_, "Astro");
+  bool b=settings_->value("DopplerTracking",false).toBool();
+  ui_->cbDopplerTracking->setChecked(b);
   ui_->doppler_widget->setVisible (ui_->cbDopplerTracking->isChecked ());
   m_DopplerMethod=settings_->value("DopplerMethod",0).toInt();
   switch (m_DopplerMethod)
@@ -86,7 +87,7 @@ void Astro::read_settings ()
 void Astro::write_settings ()
 {
   SettingsGroup g (settings_, "Astro");
-  //settings_->setValue ("DopplerTracking", ui_->cbDopplerTracking->isChecked ());
+  settings_->setValue ("DopplerTracking", ui_->cbDopplerTracking->isChecked());
   settings_->setValue ("DopplerMethod",m_DopplerMethod);
   settings_->setValue ("window/pos", pos ());
 }
diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp
index efe97d8b7..fa1874dbe 100644
--- a/widgets/mainwindow.cpp
+++ b/widgets/mainwindow.cpp
@@ -1620,8 +1620,8 @@ void MainWindow::dataSink(qint64 frames)
 
       if(m_monitoring or m_auto or m_diskData) {
         QString t;
-        t = t.asprintf("%3d %7.1f %7.1f %7.1f %6d %7d %7.1f %3d",echocom_.nsum,xlevel,sigdb,
-                       dBerr,qRound(dfreq),nDopTotal,width,nqual);
+        t = t.asprintf("%5.2f %7d %7.1f %7d %7d %7d %7.1f %7.1f",xlevel,nDopTotal,width,echocom_.nsum,
+                       nqual,qRound(dfreq),sigdb,dBerr);
         QString t0;
         if(m_diskData) {
           t0=t0.asprintf("%06d  ",m_UTCdisk);
@@ -7106,7 +7106,7 @@ void MainWindow::on_actionEcho_triggered()
   m_bFastMode=false;
   m_bFast9=false;
   WSPR_config(true);
-  ui->lh_decodes_headings_label->setText("  UTC     N   Level    SNR     dBerr    DF   Doppler  Width   Q");
+  ui->lh_decodes_headings_label->setText("  UTC   Level  Doppler  Width       N       Q      DF    SNR    dBerr");
   //                       01234567890123456789012345678901234567
   displayWidgets(nWidgets("00000000000000000010001000000000000000"));
   fast_config(false);
@@ -10000,3 +10000,28 @@ void MainWindow::on_jt65Button_clicked()
     }
     on_actionJT65_triggered();
 }
+
+void MainWindow::on_actionCopy_to_WSJTX_txt_triggered()
+{
+  qDebug() << ui->decodedTextBrowser->toPlainText();
+
+  static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("WSJT-X.txt")};
+  if(!f.open(QIODevice::Text | QIODevice::WriteOnly)) {
+    MessageBox::warning_message (this, tr ("WSJT-X.txt file error"),
+                                 tr ("Cannot open \"%1\" for writing").arg (f.fileName ()),
+                                 tr ("Error: %1").arg (f.errorString ()));
+  } else {
+    QString t=ui->decodedTextBrowser->toPlainText();
+
+    QTextStream out(&f);
+    out << t <<
+#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
+                 endl
+#else
+                 Qt::endl
+#endif
+                 ;
+    f.close();
+  }
+}
+
diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h
index aa1796c4a..d3a6e0060 100644
--- a/widgets/mainwindow.h
+++ b/widgets/mainwindow.h
@@ -173,6 +173,7 @@ private slots:
   void on_actionOpen_next_in_directory_triggered();
   void on_actionDecode_remaining_files_in_directory_triggered();
   void on_actionDelete_all_wav_files_in_SaveDir_triggered();
+  void on_actionCopy_to_WSJTX_txt_triggered();
   void on_actionOpen_log_directory_triggered ();
   void on_actionNone_triggered();
   void on_actionSave_all_triggered();
diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui
index f377631f2..c275a70e8 100644
--- a/widgets/mainwindow.ui
+++ b/widgets/mainwindow.ui
@@ -3026,6 +3026,8 @@ QLabel[oob=&quot;true&quot;] {
     <addaction name="actionOpen_next_in_directory"/>
     <addaction name="actionDecode_remaining_files_in_directory"/>
     <addaction name="separator"/>
+    <addaction name="actionCopy_to_WSJTX_txt"/>
+    <addaction name="separator"/>
     <addaction name="actionDelete_all_wav_files_in_SaveDir"/>
     <addaction name="actionErase_ALL_TXT"/>
     <addaction name="actionErase_wsjtx_log_adi"/>
@@ -3036,7 +3038,6 @@ QLabel[oob=&quot;true&quot;] {
     <addaction name="separator"/>
     <addaction name="actionSettings"/>
     <addaction name="separator"/>
-    <addaction name="separator"/>
     <addaction name="actionExit"/>
    </widget>
    <widget class="QMenu" name="menuView">
@@ -3669,6 +3670,11 @@ QLabel[oob=&quot;true&quot;] {
     <string>Active Stations</string>
    </property>
   </action>
+  <action name="actionCopy_to_WSJTX_txt">
+   <property name="text">
+    <string>Copy main text window to WSJT-X.txt</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>