P3: odd cents split the same running way everywhere (defect 17, D-38)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
Members' shares of earnings are split cumulatively by largest remainder in the closes, the members' equity statement, the K-1 worksheet and the viewer, so a member's capital on a given day never moves by a cent when its month is later closed. Old closes replay as they were; the first P3 close carries any true-up. Feature members_cumulative. Kani and Lean proofs of the bounded drift; bookspec examples. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3gXMVt7XJPi6ens1or9Dj
This commit is contained in:
44 files changed
+6636
-195
No files matched your search
@@ -57,6 +57,18 @@ impl Currency {
|
||||
}
|
||||
}
|
||||
|
||||
/// The decimal places a share of an amount in this currency is split
|
||||
/// to (members' shares of earnings, periods::allocate_cumulative): its
|
||||
/// minor units (cents, whole yen, thousandths of a dinar), or, for a
|
||||
/// code ISO 4217 gives none (gold, SDRs), the most a line may carry
|
||||
/// (kernel::MAX_LINE_SCALE). Every posted amount is then a whole number
|
||||
/// of the unit split to, so no member's running share is ever a unit
|
||||
/// from exact (rules.md B-13); split to cents, a finer amount's
|
||||
/// leftover fraction would all go to one member.
|
||||
pub fn allocation_places(&self) -> u32 {
|
||||
self.minor_units().unwrap_or(crate::kernel::MAX_LINE_SCALE)
|
||||
}
|
||||
|
||||
/// The three-letter code, e.g. `"USD"`.
|
||||
pub fn code(&self) -> &str {
|
||||
std::str::from_utf8(&self.0).expect("currency codes are ASCII by construction")
|
||||
|
||||
Reference in new issue
Block a user