diff --git a/audio/hermite.c b/audio/hermite.c
index 535f80e8f5..a608b6ba87 100644
--- a/audio/hermite.c
+++ b/audio/hermite.c
@@ -78,13 +78,16 @@ void resampler_process(rarch_resampler_t *re, struct resampler_data *data)
          processed_out++;
       }
 
-      re->r_frac -= 1.0;
-      for (unsigned i = 0; i < CHANNELS; i++)
+      while (re->r_frac >= 1.0)
       {
-         re->chan_data[i][0] = re->chan_data[i][1];
-         re->chan_data[i][1] = re->chan_data[i][2];
-         re->chan_data[i][2] = re->chan_data[i][3];
-         re->chan_data[i][3] = *in_data++;
+         re->r_frac -= 1.0;
+         for (unsigned i = 0; i < CHANNELS; i++)
+         {
+            re->chan_data[i][0] = re->chan_data[i][1];
+            re->chan_data[i][1] = re->chan_data[i][2];
+            re->chan_data[i][2] = re->chan_data[i][3];
+            re->chan_data[i][3] = *in_data++;
+         }
       }
    }