diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp
index 132f8aa4c..6dc3f008e 100644
--- a/widgets/mainwindow.cpp
+++ b/widgets/mainwindow.cpp
@@ -4783,6 +4783,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
 
 void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifiers modifiers)
 {
+  m_lastQSOProgress=m_QSOProgress;
   // decode keyboard modifiers we are interested in
   auto shift = modifiers.testFlag (Qt::ShiftModifier);
   auto ctrl = modifiers.testFlag (Qt::ControlModifier);
@@ -5188,7 +5189,11 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
     rpt=QString::number(n);
   }
 
-  ui->rptSpinBox->setValue(n);
+  qDebug() << "aa" << m_lastQSOProgress << m_QSOProgress << rpt << m_lastMessageSent.trimmed();
+// Keep signal report fixed during a QSO.
+  if((m_lastQSOProgress < REPORT or m_lastQSOProgress > ROGER_REPORT) and
+     (m_QSOProgress==REPORT or m_QSOProgress==ROGER_REPORT)) ui->rptSpinBox->setValue(n);
+
 // Don't genStdMsgs if we're already sending 73, or a "TU; " msg is queued.
   m_bTUmsg=false;   //### Temporary: disable use of "TU;" messages
   if (!m_nTx73 and !m_bTUmsg) {
diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h
index d71a400f4..b4a8f3067 100644
--- a/widgets/mainwindow.h
+++ b/widgets/mainwindow.h
@@ -483,6 +483,7 @@ private:
   qint32  m_earlyDecode=41;
   qint32  m_earlyDecode2=47;
   qint32  m_nDecodes=0;
+  qint32  m_lastQSOProgress=0;
 
   bool    m_btxok;		//True if OK to transmit
   bool    m_diskData;