if granularity is negative, endNum is negative and loop
if granularity is negative, endNum is negative and loop

webzwo0i/etherpad-lite,xavidotron/etherpad-lite,aptivate/etherpad-lite,joequant/etherpad-lite,cmbirk/etherpad-lite,ether/etherpad-lite,xavidotron/etherpad-lite,xavidotron/etherpad-lite,lpagliari/etherpad-lite,ether/etherpad-lite,Stackato-Apps/etherpad-lite,asac/etherpad-lite,asac/etherpad-lite,ktdev/etherpad-lite,ether/etherpad-lite,2-B/etherpad-lite,webzwo0i/etherpad-lite,aptivate/etherpad-lite,neynah/etherpad-lite,neynah/etherpad-lite,KonradMil/etherpad-lite,storytouch/etherpad-lite,aptivate/etherpad-lite,KonradMil/etherpad-lite,storytouch/etherpad-lite,rschiang/etherpad-lite,cloudfoundry-community/etherpad-lite-cf,joequant/etherpad-lite,University-of-Potsdam-MM/etherpad-lite,2-B/etherpad-lite,Stackato-Apps/etherpad-lite,neynah/etherpad-lite,Stackato-Apps/etherpad-lite,2-B/etherpad-lite,lpagliari/etherpad-lite,University-of-Potsdam-MM/etherpad-lite,lpagliari/etherpad-lite,cloudfoundry-community/etherpad-lite-cf,rschiang/etherpad-lite,University-of-Potsdam-MM/etherpad-lite,rschiang/etherpad-lite,kentonv/etherpad-lite,2-B/etherpad-lite,cloudfoundry-community/etherpad-lite-cf,neynah/etherpad-lite,Stackato-Apps/etherpad-lite,asac/etherpad-lite,tiblu/etherpad-lite,tiblu/etherpad-lite,webzwo0i/etherpad-lite,cloudfoundry-community/etherpad-lite-cf,tiblu/etherpad-lite,kentonv/etherpad-lite,storytouch/etherpad-lite,kentonv/etherpad-lite,ktdev/etherpad-lite,tiblu/etherpad-lite,KonradMil/etherpad-lite,joequant/etherpad-lite,cmbirk/etherpad-lite,joequant/etherpad-lite,asac/etherpad-lite,cmbirk/etherpad-lite,lpagliari/etherpad-lite,KonradMil/etherpad-lite,ktdev/etherpad-lite,aptivate/etherpad-lite,cmbirk/etherpad-lite,rschiang/etherpad-lite,ktdev/etherpad-lite,webzwo0i/etherpad-lite,kentonv/etherpad-lite,University-of-Potsdam-MM/etherpad-lite,xavidotron/etherpad-lite