diff --git a/frontend/src/components/YaesuPanel.tsx b/frontend/src/components/YaesuPanel.tsx
index 51bef15..2506c0b 100644
--- a/frontend/src/components/YaesuPanel.tsx
+++ b/frontend/src/components/YaesuPanel.tsx
@@ -352,11 +352,11 @@ export function YaesuPanel({ onReportRST, onKeySpeed }: {
title={onReportRST ? t('yaesu.sToRst') : undefined} />
{/* Watts as MEASURED, not the power setting scaled by a percentage:
the setting says what was asked for, the meter says what left. */}
-
{/* The RATIO, as the rig shows it — a percentage of meter travel is
not something an operator can act on. The bar keeps the travel. */}
- = 1 ? view.swr.toFixed(1) : '1.0') : '—'} />
diff --git a/internal/cat/yaesu_panel.go b/internal/cat/yaesu_panel.go
index a91b025..fe85c0a 100644
--- a/internal/cat/yaesu_panel.go
+++ b/internal/cat/yaesu_panel.go
@@ -193,9 +193,17 @@ func (y *Yaesu) readPanel(mode string, split bool, txHz int64) {
}
}
} else {
- // Zeroed rather than frozen: a stale SWR bar from the last transmission
- // reads as a live measurement.
+ // Zeroed rather than frozen: a stale reading from the last transmission
+ // reads as a live one.
+ //
+ // EVERY transmit value has to be cleared here, and the peak-hold state with
+ // them. Clearing only the two bar percentages left the watts and the SWR
+ // ratio standing — the PWR bar stayed at full scale after the operator
+ // stopped transmitting — and a peak left in the holder would have carried
+ // the old reading into the next transmission.
y.panel.PowerMeter, y.panel.SWRMeter = 0, 0
+ y.panel.PowerW, y.panel.SWR = 0, 0
+ y.powerPeak, y.powerWPeak, y.swrPeak = meterPeak{}, meterPeak{}, meterPeak{}
}
y.panelCycle++