# Margin maintenance

### Term Repo Lockers

Each Term Repo has a Term Repo Locker, which is a smart contract that locks collateral on behalf of borrowers and lenders for that Term Repo.

{% hint style="info" %}
By segregating Term Repo Lockers by maturity and purchase token/collateral token pairs rather than instituting a single large commingled collateral pool reduces user exposure to cybersecurity risks and exploits.&#x20;
{% endhint %}

### Price oracle

All borrower balances, including collateral and repurchase balances are valued in USD using decentralized price oracles (primarily [Chainlink](https://chain.link/)). These oracles are source of truth for the fair-market value of all tokens on the Protocol (including all collateral tokens) and are decentralized to mitigate against unilateral attack by a malicious data provider (for more information, see risk disclosures on [oracle risk)](https://docs.term.finance/risk-disclosures/term-repo-risks#oracle-risk).

### Withdraw collateral

If at any time a borrower has [margin excess](https://docs.term.finance/protocol/terminology#margin-excess), the borrower may withdraw collateral by calling the public function `externalUnlockCollateral`.  A borrower may not make any withdrawals that would put their account into a [margin deficit](https://docs.term.finance/protocol/term-repos/broken-reference).

### Add collateral

If at any time a borrower wishes to post additional margin to their account as additional buffer against liquidation, they may do so by calling the public function `externalLockCollateral`. There are not limits to the amount of collateral a borrower my lock in this manner.
