diff --git a/src/popins2_merge_and_set_mate.h b/src/popins2_merge_and_set_mate.h
index a11587f526ea222cf45ec55a1e676370593857bb..0af731a1a2564c261e6dd96484e2374f20b1fb8e 100644
--- a/src/popins2_merge_and_set_mate.h
+++ b/src/popins2_merge_and_set_mate.h
@@ -1,5 +1,6 @@
 #include <sstream>
 #include <cerrno>
+#include <stdlib.h>
 
 #include <seqan/file.h>
 #include <seqan/sequence.h>
@@ -106,7 +107,7 @@ inline CharString iterSuffix(const CharString &PG_ID, const std::unordered_set<c
     CharString inf = ".mH";
     append(ret, inf);
     char buffer[32];
-    itoa(i, buffer, 10);  // unsigned, char*, numerical base
+    snprintf(buffer, sizeof(buffer), "%d", i);  // unsigned, char*, numerical base
     CharString suf = buffer;
     append(ret, suf);