Hello, Decimal's scale depends on computing order of additions, if additions subsequent result is zero: ```rust #[test] fn test_scale_with_add() { let d3 = dec!(3.001); let d2 = dec!(2.01); let d_332 = -d3 + d3 + d2; let d_323 = -d3 + d2 + d3; assert_eq!(d_323, d_332); assert_eq!(d_323.scale(), 3); // This assert fails: assert_eq!(d_323.scale(), // scale = 3 d_332.scale()); // scale = 2 } ``` And one test to check that scale is preserved in normal case: ```rust #[test] fn test_preserve_scale() { let d9 = dec!(9.000000000); let d3 = dec!(3.000); assert_eq!(d9.scale(), 9); assert_eq!(d3.scale(), 3); let d = d9 + d3; assert_eq!(d.scale(), 9); } ```