diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc
index 36a667d..1bdf541 100644
--- a/libs/ardour/audiosource.cc
+++ b/libs/ardour/audiosource.cc
@@ -286,6 +286,8 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, nframes_t npeaks, nframes_t s
 	Sample* raw_staging = 0;
 	int _peakfile = -1;
 
+	nframes_t const peaks_size = npeaks;
+
 	expected_peaks = (cnt / (double) samples_per_file_peak);
 	scale = npeaks/expected_peaks;
 
@@ -374,7 +376,7 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, nframes_t npeaks, nframes_t s
 		}
 
 		if (zero_fill) {
-			memset (&peaks[npeaks], 0, sizeof (PeakData) * zero_fill);
+			memset (peaks + peaks_size - zero_fill, 0, sizeof (PeakData) * zero_fill);
 		}
 
 		return 0;
@@ -485,7 +487,7 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, nframes_t npeaks, nframes_t s
 		}
 
 		if (zero_fill) {
- 			memset (&peaks[npeaks], 0, sizeof (PeakData) * zero_fill);
+ 			memset (peaks + peaks_size - zero_fill, 0, sizeof (PeakData) * zero_fill);
  		}
 		
 		ret = 0;
@@ -562,7 +564,7 @@ AudioSource::read_peaks_with_fpp (PeakData *peaks, nframes_t npeaks, nframes_t s
 		}
 		
 		if (zero_fill) {
-			memset (&peaks[npeaks], 0, sizeof (PeakData) * zero_fill);
+			memset (peaks + peaks_size - zero_fill, 0, sizeof (PeakData) * zero_fill);
 		}
 
 		ret = 0;
