function createNewCicle() private {
		currentCicle += 1;
		cicles[currentCicle] = Cicle({ number:currentCicle,
									initialBlock:block.number,
									numTickets:maintenanceTickets,
									lastPlayer:maintenanceFunds,
									lastJackpotChance:0,
									lastBetBlock:block.number,
									winnerPot:0,
									commyPot:0,
									commyReward:0,
									currentTicketCost:0,
									isActive:false });

		cicles[currentCicle].ticketsByHash[maintenanceFunds] = maintenanceTickets;

		if(currentCicle != 1) {
			cicles[currentCicle-1].ticketsByHash[maintenanceFunds] = 0;
			if (cicles[currentCicle-1].commyReward * maintenanceTickets > idealReserve) {
				cicles[currentCicle].winnerPot = idealReserve * winnerPct / 100;
				cicles[currentCicle].commyPot = idealReserve * commyPct / 100;
				maintenanceFunds.transfer(cicles[currentCicle-1].commyReward * maintenanceTickets - idealReserve);
			} else {
				if(cicles[currentCicle-1].numTickets == maintenanceTickets) {
					cicles[currentCicle].winnerPot = cicles[currentCicle-1].winnerPot;
					cicles[currentCicle].commyPot = cicles[currentCicle-1].commyPot;
				} else {
					cicles[currentCicle].winnerPot = (cicles[currentCicle-1].commyReward * maintenanceTickets) * winnerPct / 100;
					cicles[currentCicle].commyPot = (cicles[currentCicle-1].commyReward * maintenanceTickets) * commyPct / 100;
				}
			}

			setCommyReward(currentCicle);
			cicles[currentCicle].currentTicketCost = (cicles[currentCicle].winnerPot + cicles[currentCicle].commyPot) / baseTicketProportion;
			if(cicles[currentCicle].currentTicketCost < minTicketCost) {
				cicles[currentCicle].currentTicketCost = minTicketCost;
			}
		}
				
		cicles[currentCicle].isActive = true;
		emit NewCicle(currentCicle, block.number);
	}