---
title: clsPrepayDiscountFactor
summary: API reference for clsPrepayDiscountFactor.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Rating
reference_type: package
---
# clsPrepayDiscountFactor
Represents an effective-dated discount factor for a prepay frequency. The class feeds the library's factor-selection pipeline and falls back to the neutral factor when its row does not apply.
## Purpose
- Represents an effective-dated discount factor for a prepay frequency.
- The class feeds the library's factor-selection pipeline and falls back to the neutral factor when its row does not apply.
## Context
- Namespace: `SAIF.Business.Policy.Rating`
- Assembly/package: `SAIF.Business.Policy.Rating`
## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| PrepayFrequencyCode | `Public ReadOnly Property PrepayFrequencyCode() As String` | Prepay frequency code whose installment schedule this discount factor applies to. |
| EffectiveDate | `Public ReadOnly Property EffectiveDate() As Date` | First date on which this prepay discount factor is in force. |
| ExpirationDate | `Public ReadOnly Property ExpirationDate() As Date` | Optional date after which this prepay discount factor no longer applies. |
| PrepayDiscountFactor | `Public Property PrepayDiscountFactor() As Decimal` | Stored discount multiplier for the prepay-frequency row effective on this date. |
| AdjustedRateFactor | `Public Property AdjustedRateFactor(ByVal inAdjustedRateProvider As iAdjustedRateProvider) As Decimal Implements iAdjustedRateFactor.Factor` | Returns the stored prepay-discount multiplier when the row is valid; otherwise returns the neutral factor. |
| CreateDate | `Public ReadOnly Property CreateDate() As Date` | Audit timestamp when the discount-factor row was created. |
| CreateUser | `Public ReadOnly Property CreateUser() As String` | Audit user who created the discount-factor row. |
| UpdateDate | `Public ReadOnly Property UpdateDate() As Date` | Audit timestamp from the most recent update to the discount-factor row. |
| UpdateUser | `Public ReadOnly Property UpdateUser() As String` | Audit user from the most recent update to the discount-factor row. |
| IsExpirationDateNull | `Public Function IsExpirationDateNull() As Boolean` | Reports whether the discount-factor row has no expiration date. |
| IsUpdateDateNull | `Public Function IsUpdateDateNull() As Boolean` | Reports whether no update timestamp has been recorded for the discount-factor row. |
| IsUpdateUserNull | `Public Function IsUpdateUserNull() As Boolean` | Reports whether no update user has been recorded for the discount-factor row. |
| Equals | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Returns `True` only when both arguments are prepay-discount rows with the same frequency code and effective window. |
| Equals | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Returns `True` when the supplied object is a prepay-discount row with the same frequency code and effective window. |
| Equals | `Public Overloads Function Equals(ByVal inObject As clsPrepayDiscountFactor) As Boolean` | Treats two prepay-discount rows as equal when frequency code, effective date, and expiration date all match. |
| GetHashCode | `Public Overrides Function GetHashCode() As Integer` | Hashes `PrepayFrequencyCode`, the value this type uses as its identity key in keyed collections. |
| ToString | `Public Overrides Function ToString() As String` | Formats the row as its frequency code concatenated with its effective date. |
| GetPrepayDiscountFactor | `Public Shared Function GetPrepayDiscountFactor(ByVal inDataportal As IDataPortalInfo, ByVal inPrepayFrequencyCode As String, ByVal inSelectDate As Date) As clsPrepayDiscountFactor` | Retrieves the an effective-dated discount factor for a prepay frequency identified by the key values or effective-date criteria supplied by the caller. |
| GetPrepayDiscountFactor | `Public Shared Function GetPrepayDiscountFactor(ByVal inDataportal As IDataPortalInfo, ByVal inPrepayFrequency As clsPrepayFrequency.PrepayFrequencies, ByVal inSelectDate As Date) As clsPrepayDiscountFactor` | Retrieves the an effective-dated discount factor for a prepay frequency identified by the key values or effective-date criteria supplied by the caller. |
| ValidPrepayDiscountFactor | `Public Function ValidPrepayDiscountFactor(ByVal target As Object, ByVal e As clsRuleArgs) As Boolean` | BOF rule method that requires a nonblank prepay-frequency code before the row is treated as valid. |
| Member | `Public Const RETRIEVE_PREPAYDISCOUNTFACTOR As String = "Select " & "PREPAY_DISCOUNT_FACTOR.PREPAY_FREQUENCY_CODE as PrepayFrequencyCode, " & "PREPAY_DISCOUNT_FACTOR.EFFECTIVE_DATE as EffectiveDate, " & "PREPAY_DISCOUNT_FACTOR.EXPIRATION_DATE as ExpirationDate, " & "PREPAY_DISCOUNT_FACTOR.DISCOUNT_FACTOR as PrepayDiscountFactor, " & "PREPAY_DISCOUNT_FACTOR.CREATE_DATE as CreateDate, " & "PREPAY_DISCOUNT_FACTOR.CREATE_USER as CreateUser, " & "PREPAY_DISCOUNT_FACTOR.UPDATE_DATE as UpdateDate, " & "PREPAY_DISCOUNT_FACTOR.UPDATE_USER as UpdateUser" & " From " & "PREPAY_DISCOUNT_FACTOR"` | Base SELECT statement that loads prepay-discount rows from `PREPAY_DISCOUNT_FACTOR`. |
| PrepayFrequencyCode | `Public Property PrepayFrequencyCode() As String` | Prepay-frequency retrieval key used to select the applicable discount-factor row. |
| SelectDate | `Public Property SelectDate() As Date` | As-of date used to retrieve the discount-factor row whose effective window contains that date. |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo)` | Creates an empty BOF object shell that shared factory methods or retrieval logic can populate with a loaded row. |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo, ByVal inPrepayFrequencyCode As String, ByVal inSelectDate As Date)` | Creates a criteria-backed instance seeded with `inPrepayFrequencyCode`, `inSelectDate` so the next retrieval runs in the caller's requested context. |
## Inherited public members
| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| Rules | `Property Rules As clsRulesManager` | Owns the BOF rules manager used to evaluate registered validation logic.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| BeginEdit | `Sub BeginEdit()` | Opens an n-level edit session for the business object.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| CancelEdit | `Sub CancelEdit()` | Rolls back the active edit scope.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| ApplyEdit | `Sub ApplyEdit()` | Commits the active edit scope.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| Error | `ReadOnly Property Error As String` | Surfaces aggregate broken-rule text through `IDataErrorInfo`.† | `SAIF.Framework.Core` — `clsBusinessBase` |
## Behavioral notes
- When callers ask for an applied factor, the type returns either its stored multiplier or the neutral factor defined by the policy contracts.
## Constraints and usage notes
- Prefer the provider-aware factor member when composing rates so the type's applicability checks run before a multiplier is used.
> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. They describe inherited behavior from the
> indicated origin library and should be verified if the dependency version changes.
## Sources
- `Business\SAIF.Business.Policy.Rating\clsPrepayDiscountFactor.vb`
