```\nuint256 assetTotalSupply = asset.balanceOf(address(this));\nuint256 availableTotalSupply = assetTotalSupply.sub(totalUnclaimed);\nuint256 newSeconds = currentTimestamp.sub(lastDripTimestamp);\nuint256 nextExchangeRateMantissa = exchangeRateMantissa;\nuint256 newTokens;\nuint256 measureTotalSupply = measure.totalSupply();\n\nif (measureTotalSupply > 0 && availableTotalSupply > 0 && newSeconds > 0) {\n  newTokens = newSeconds.mul(dripRatePerSecond);\n  if (newTokens > availableTotalSupply) {\n    newTokens = availableTotalSupply;\n  }\n  uint256 indexDeltaMantissa = measureTotalSupply > 0 ? FixedPoint.calculateMantissa(newTokens, measureTotalSupply) : 0;\n  nextExchangeRateMantissa = nextExchangeRateMantissa.add(indexDeltaMantissa);\n\n  emit Dripped(\n    newTokens\n  );\n}\n```\n