diff --git a/iguana/iguana777.h b/iguana/iguana777.h
index a01ea6438..10966c449 100755
--- a/iguana/iguana777.h
+++ b/iguana/iguana777.h
@@ -39,7 +39,7 @@ typedef int32_t (*blockhashfunc)(uint8_t *blockhashp,uint8_t *serialized,int32_t
 #define IGUANA_MAXPENDHDRS 1
 #define _IGUANA_MAXPENDING 3
 #define IGUANA_MINPENDBUNDLES 16
-#define IGUANA_MAXPENDBUNDLES 128
+#define IGUANA_MAXPENDBUNDLES 64
 #define IGUANA_BUNDLELOOP 7777
 #define IGUANA_RPCPORT 7778
 #define IGUANA_MAXRAMCHAINSIZE ((uint64_t)1024L * 1024L * 1024L * 16)
@@ -474,7 +474,7 @@ struct iguana_info
     struct iguana_bundle *bundles[IGUANA_MAXBUNDLES],*current,*lastpending;
     int32_t numremain,numpendings,zcount,recvcount,bcount,pcount,lastbundle,numsaved;
     uint32_t recvtime,hdrstime,backstoptime,lastbundletime,numreqsent,numbundlesQ,lastbundleitime;
-    double backstopmillis; bits256 backstophash2;
+    double backstopmillis; bits256 backstophash2; int64_t spaceused;
     int32_t initialheight,mapflags,minconfirms,numrecv,bindsock,isRT,backstop,blocksrecv,merging,polltimeout,numreqtxids,allhashes; bits256 reqtxids[64];
     void *launched,*started;
     uint64_t bloomsearches,bloomhits,bloomfalse,collisions; uint8_t blockspace[IGUANA_MAXPACKETSIZE + 8192]; struct OS_memspace blockMEM;
diff --git a/iguana/iguana_bundles.c b/iguana/iguana_bundles.c
index 80026b2ce..79857a70d 100755
--- a/iguana/iguana_bundles.c
+++ b/iguana/iguana_bundles.c
@@ -449,7 +449,7 @@ void iguana_bundlestats(struct iguana_info *coin,char *str)
 {
     static uint32_t lastdisp;
     int32_t i,n,m,count,pending,dispflag,numrecv,done,numhashes,numcached,numsaved,numemit;
-    int64_t estsize = 0; struct iguana_bundle *bp,*lastpending = 0,*firstgap = 0; double *sortbuf; struct iguana_peer *addr;
+    int64_t spaceused=0,estsize = 0; struct iguana_bundle *bp,*lastpending = 0,*firstgap = 0; double *sortbuf; struct iguana_peer *addr;
     dispflag = (rand() % 1000) == 0;
     numrecv = numhashes = numcached = numsaved = numemit = done = 0;
     count = coin->bundlescount;
@@ -474,7 +474,8 @@ void iguana_bundlestats(struct iguana_info *coin,char *str)
             {
                 if ( firstgap == 0 )
                     firstgap = lastpending = bp;
-                else if ( ++pending == coin->MAXBUNDLES )
+                spaceused += bp->datasize;
+                if ( lastpending == 0 && spaceused > coin->MAXMEM )
                     lastpending = bp;
                 sortbuf[m*2] = bp->metric;
                 sortbuf[m*2 + 1] = i;
@@ -511,7 +512,9 @@ void iguana_bundlestats(struct iguana_info *coin,char *str)
     if ( lastpending != 0 )
         coin->lastpending = lastpending;
     coin->numsaved = numsaved;
-    sprintf(str,"%d 1st.%d-%d N[%d] Q.%d h.%d r.%d c.%d:%d:%d s.%d d.%d E.%d:%d M.%d L.%d est.%d %s %d:%02d:%02d %03.3f peers.%d/%d Q.(%d %d)",firstgap!=0?firstgap->numsaved:0,firstgap!=0?firstgap->hdrsi:0,lastpending!=0?lastpending->hdrsi:0,count,coin->numbundlesQ,numhashes,coin->blocksrecv,coin->numcached,numcached,coin->cachefreed,numsaved,done,numemit,coin->numreqsent,coin->blocks.hwmchain.height,coin->longestchain,coin->MAXBUNDLES,mbstr(str2,estsize),(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,difft.millis,p,coin->MAXPEERS,queue_size(&coin->priorityQ),queue_size(&coin->blocksQ));
+    coin->spaceused = spaceused;
+    char str4[65];
+    sprintf(str,"%d 1st.%d-%d N[%d] Q.%d h.%d r.%d c.%s s.%d d.%d E.%d:%d M.%d L.%d est.%d %s %d:%02d:%02d %03.3f peers.%d/%d Q.(%d %d)",firstgap!=0?firstgap->numsaved:0,firstgap!=0?firstgap->hdrsi:0,lastpending!=0?lastpending->hdrsi:0,count,coin->numbundlesQ,numhashes,coin->blocksrecv,mbstr(str4,spaceused),numsaved,done,numemit,coin->numreqsent,coin->blocks.hwmchain.height,coin->longestchain,coin->MAXBUNDLES,mbstr(str2,estsize),(int32_t)difft.x/3600,(int32_t)(difft.x/60)%60,(int32_t)difft.x%60,difft.millis,p,coin->MAXPEERS,queue_size(&coin->priorityQ),queue_size(&coin->blocksQ));
     //sprintf(str+strlen(str),"%s.%-2d %s time %.2f files.%d Q.%d %d\n",coin->symbol,flag,str,(double)(time(NULL)-coin->starttime)/60.,coin->peers.numfiles,queue_size(&coin->priorityQ),queue_size(&coin->blocksQ));
     if ( time(NULL) > lastdisp+10 )
     {
diff --git a/iguana/iguana_recv.c b/iguana/iguana_recv.c
index a2e01a3f1..b90b29c53 100755
--- a/iguana/iguana_recv.c
+++ b/iguana/iguana_recv.c
@@ -425,7 +425,7 @@ int32_t iguana_bundlekick(struct iguana_info *coin,struct iguana_bundle *bp,int3
         {
             if ( block->fpipbits == 0 )//|| block->RO.recvlen == 0 )
             {
-                if (  block->issued == 0 || now > block->issued+60 )
+                if ( bp->numsaved > bp->n*.95 || block->issued == 0 || now > block->issued+60 )
                 {
                     block->numrequests++;
                     if ( bp->hdrsi == starti )