diff --git a/ikcp.c b/ikcp.c
index 9473607..6e14bc9 100644
--- a/ikcp.c
+++ b/ikcp.c
@@ -470,7 +470,7 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
 {
 	IKCPSEG *seg;
 	int count, i;
-	int append = 0;
+	int sent = 0;
 
 	assert(kcp->mss > 0);
 	if (len < 0) return -1;
@@ -498,11 +498,11 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
 				len -= extend;
 				iqueue_del_init(&old->node);
 				ikcp_segment_delete(kcp, old);
-				append = extend;
+				sent = extend;
 			}
 		}
 		if (len <= 0) {
-			return 0;
+			return sent;
 		}
 	}
 
@@ -510,8 +510,8 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
 	else count = (len + kcp->mss - 1) / kcp->mss;
 
 	if (count >= (int)IKCP_WND_RCV) {
-		if (kcp->stream != 0 && append > 0) 
-			return append;
+		if (kcp->stream != 0 && sent > 0) 
+			return sent;
 		return -2;
 	}
 
@@ -537,9 +537,10 @@ int ikcp_send(ikcpcb *kcp, const char *buffer, int len)
 			buffer += size;
 		}
 		len -= size;
+		sent += size;
 	}
 
-	return 0;
+	return sent;
 }