diff --git a/Storage/Disk/Encodings/MFM.cpp b/Storage/Disk/Encodings/MFM.cpp index adb321867..3aa918365 100644 --- a/Storage/Disk/Encodings/MFM.cpp +++ b/Storage/Disk/Encodings/MFM.cpp @@ -175,7 +175,10 @@ template std::shared_ptr } while(segment.data.size() < expected_track_bytes) shifter.add_byte(0x00); - if(segment.data.size() > expected_track_bytes) segment.data.resize(expected_track_bytes); + + // Allow the amount of data written to be up to 10% more than the expected size. Which is generous. + size_t max_size = expected_track_bytes + (expected_track_bytes / 10); + if(segment.data.size() > max_size) segment.data.resize(max_size); segment.number_of_bits = (unsigned int)(segment.data.size() * 8); return std::shared_ptr(new Storage::Disk::PCMTrack(std::move(segment)));