# Tally Votes

At the end of each epoch, the votes cast in that epoch need to tallied to determine the new `desiredEgl` value. This can be called directly by any wallet, or will get called automatically on any `vote(...)` or `reVote(...)` call if the epoch has ended.

See [Voting Threshold](https://docs.egl.vote/protocol-overview/voting/voting-threshold) for details regarding participation requirements

See [Calculating desiredEgl](https://docs.egl.vote/protocol-overview/voting/calculating-desiredegl) for details regarding how the `desiredEgl` is calculated

### 1.`tallyVotes()`

#### Function Signature

```javascript
function tallyVotes() public whenNotPaused
```

#### Validations

| Validation **Rule**                                        | Description                                                          |
| ---------------------------------------------------------- | -------------------------------------------------------------------- |
| `block.timestamp > currentEpochStartDate.add(epochLength)` | Epoch must have ended before the votes for that epoch can be tallied |

#### Events Emitted

* `VoteThresholdMet` (Conditional)
* `VoteThresholdFailed` (Conditional)
* `CreatorRewardsClaimed` (Conditional)
* `VotesTallied`

#### Web3 Example

```javascript
await eglVotingInstance.tallyVotes({ from: "0x2be650ba..."})
```
