function redenominate() public onlyAdmin returns(uint current_round){
        require(frozen == false); 
        require(round<9); 

        
        _totalSupply = _totalSupply.sub( team_fund%mul[round] ).sub( redenom_dao_fund%mul[round] ).sub( dec[8-round]*mul[round-1] );

        
        _totalSupply = ( _totalSupply / mul[round] ) * mul[round];
        team_fund = ( team_fund / mul[round] ) * mul[round]; 
        redenom_dao_fund = ( redenom_dao_fund / mul[round] ) * mul[round]; 

        if(round>1){
            
            uint superold = dec[(8-round)+1]; 

            
            epoch_fund = epoch_fund.add(superold * mul[round-2]);
            dec[(8-round)+1] = 0;
        }

        
        if(round<8){ 

            uint unclimed = dec[8-round]; 
            
            uint total_current = dec[8-1-round]; 
            

            
            if(total_current==0){
                current_toadd = [0,0,0,0,0,0,0,0,0]; 
                round++;
                emit Redenomination(round);
                return round;
            }

            
            uint[9] memory numbers  =[uint(1),2,3,4,5,6,7,8,9]; 
            uint[9] memory ke9  =[uint(0),0,0,0,0,0,0,0,0]; 
            uint[9] memory k2e9  =[uint(0),0,0,0,0,0,0,0,0]; 

            uint k05summ = 0;

                for (uint k = 0; k < ke9.length; k++) {
                     
                    ke9[k] = numbers[k]*1e9/total_current;
                    if(k<5) k05summ += ke9[k];
                }             
                for (uint k2 = 5; k2 < k2e9.length; k2++) {
                    k2e9[k2] = uint(ke9[k2])+uint(k05summ)*uint(weight[k2])/uint(100);
                }
                for (uint n = 5; n < current_toadd.length; n++) {
                    current_toadd[n] = k2e9[n]*unclimed/10/1e9;
                }
                
                
        }else{
            if(round==8){
                
                epoch_fund = epoch_fund.add(dec[0] * 10000000); 
                dec[0] = 0;
            }
            
        }

        round++;
        emit Redenomination(round);
        return round;
    }