---
title: Compute the adjusted rate for a class
summary: `ClassRateExtensions.AdjustedRate(Target, inRateTierFactor, inUSLHWFactor, AccidentLimitFactors, OtherFactors)` (`ClassRateExtensions.vb:39-58`)
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Rating
reference_type: package
operation_id: OP-001
trigger: Premium rating needs the final rate for a rated class line
---

# Compute the adjusted rate for a class

`ClassRateExtensions.AdjustedRate(Target, inRateTierFactor, inUSLHWFactor, AccidentLimitFactors, OtherFactors)` (`ClassRateExtensions.vb:39-58`)

| Field | Value |
| --- | --- |
| **Operation ID** | OP-001 |
| **Trigger** | Premium rating needs the final rate for a rated class line |
| **Inputs** | An `iAdjustedRateProvider` target, a `clsRateTierFactor`, a `clsUSLHWCompFactor`, a sequence of accident-limit `iAdjustedRateFactor`, a sequence of other `iAdjustedRateFactor` |
| **Outputs** | Decimal rate rounded to 6 decimal places |
| **Primary components** | ``ClassRateExtensions.AdjustedRate(Target, inRateTierFactor, inUSLHWFactor, AccidentLimitFactors, OtherFactors)` (`ClassRateExtensions.vb:39-58`)` |
| **Entry point** | `Business\SAIF.Business.Policy.Rating\ClassRateExtensions.vb` |

## Steps

1. Filter `OtherFactors`, discarding any `Nothing` entries.
2. Project each remaining factor to its value by calling `factor.Factor(Target)` — each factor
3. Multiply the values into a cumulative factor starting at 1.
4. Compute the base rate by delegating to `BaseRate` (OP-002).
5. Multiply base rate × cumulative factor.
6. Return `Math.Round(Rate, 6)` ([BR-001](../business-rules.md#br-001-the-adjusted-rate-is-the-base-rate-multiplied-by-the-product-of-all-applicable-non-null-other-factors-rounded-to-6-decimal-places)).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
  Start([Trigger: rating needs the final rate for a class line]) --> S1[Filter OtherFactors: discard Nothing entries]
  S1 --> S2[Project each remaining factor via Factor Target]
  S2 --> S3[Multiply values into CumulativeFactor starting at 1]
  S3 --> S4[Compute base rate by delegating to BaseRate OP-002]
  S4 --> S5[Multiply base rate by CumulativeFactor]
  S5 --> S6[Round to 6 decimal places]
  S6 --> Done([Return adjusted rate - BR-001])
```

## Failure and edge-case behavior
- Review the linked business rules and SQL documents for the validation or data-access conditions that can block this operation.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `Business\SAIF.Business.Policy.Rating\ClassRateExtensions.vb`
