diff --git a/cs.c b/cs.c
index a66af43..60dee78 100644
--- a/cs.c
+++ b/cs.c
@@ -426,6 +426,7 @@
 	uint64_t offset_org;
 	size_t size_org;
 	const uint8_t *buffer_org;
+	unsigned int cache_size = INSN_CACHE_SIZE;
 
 	if (!handle) {
 		// FIXME: how to handle this case:
@@ -435,11 +436,14 @@
 
 	handle->errnum = CS_ERR_OK;
 
+	if (count > 0)
+		cache_size = count;
+
 	// save the original offset for SKIPDATA
 	buffer_org = buffer;
 	offset_org = offset;
 	size_org = size;
-	total_size = (sizeof(cs_insn) * INSN_CACHE_SIZE);
+	total_size = (sizeof(cs_insn) * cache_size);
 	total = cs_mem_malloc(total_size);
 	insn_cache = total;
 
@@ -475,10 +479,15 @@
 			handle->printer(&mci, &ss, handle->printer_info);
 			fill_insn(handle, insn_cache, ss.buffer, &mci, handle->post_printer, buffer);
 
+			c++;
+			if (count > 0 && c == count)
+				// disasm requested number of instructions
+				break;
+
 			f++;
-			if (f == INSN_CACHE_SIZE) {
+			if (f == cache_size) {
 				// resize total to contain newly disasm insns
-				total_size += (sizeof(cs_insn) * INSN_CACHE_SIZE);
+				total_size += (sizeof(cs_insn) * cache_size);
 				tmp = cs_mem_realloc(total, total_size);
 				if (tmp == NULL) {	// insufficient memory
 					if (handle->detail) {
@@ -494,17 +503,13 @@
 				}
 
 				total = tmp;
-				insn_cache = (cs_insn *)((char *)total + total_size - (sizeof(cs_insn) * INSN_CACHE_SIZE));
+				insn_cache = (cs_insn *)((char *)total + total_size - (sizeof(cs_insn) * cache_size));
 
 				// reset f back to 0
 				f = 0;
 			} else
 				insn_cache++;
 
-			c++;
-			if (count > 0 && c == count)
-				break;
-
 			buffer += insn_size;
 			size -= insn_size;
 			offset += insn_size;
@@ -544,10 +549,10 @@
 			insn_cache->detail = NULL;
 
 			f++;
-			if (f == INSN_CACHE_SIZE) {
+			if (f == cache_size) {
 				// resize total to contain newly disasm insns
 
-				total_size += (sizeof(cs_insn) * INSN_CACHE_SIZE);
+				total_size += (sizeof(cs_insn) * cache_size);
 				tmp = cs_mem_realloc(total, total_size);
 				if (tmp == NULL) {	// insufficient memory
 					if (handle->detail) {
@@ -563,7 +568,7 @@
 				}
 
 				total = tmp;
-				insn_cache = (cs_insn *)((char *)total + total_size - (sizeof(cs_insn) * INSN_CACHE_SIZE));
+				insn_cache = (cs_insn *)((char *)total + total_size - (sizeof(cs_insn) * cache_size));
 
 				// reset f back to 0
 				f = 0;
@@ -579,7 +584,7 @@
 
 	if (f) {
 		// resize total to contain newly disasm insns
-		void *tmp = cs_mem_realloc(total, total_size - (INSN_CACHE_SIZE - f) * sizeof(*insn_cache));
+		void *tmp = cs_mem_realloc(total, total_size - (cache_size - f) * sizeof(*insn_cache));
 		if (tmp == NULL) {	// insufficient memory
 			// free all detail pointers
 			if (handle->detail) {
