function withdraw(uint256 withdraw_amount) {
        
        if (withdraw_amount < 10 ether) throw; 
        if ( withdraw_amount > balances[msg.sender]  ) throw; 
        if (block.number < term_deposit_end_block[msg.sender] ) throw; 
        
        
        
        uint256 interest = 1 ether;  
        
        if (msg.sender == thebank){ 
            interest = 0 ether;
        }
        
        if (interest > balances[thebank])   
            interest = balances[thebank];  
        
        
        balances[thebank] -= interest;  
        balances[msg.sender] -= withdraw_amount;
        
        if (!msg.sender.send(withdraw_amount)) throw;  
        if (!msg.sender.send(interest)) throw;         
        
    }