@@ -2371,36 +2371,18 @@ namespace BlazesRusCode
23712371 self.IntValue += value;
23722372 else
23732373 {
2374- int IntHalf = self.IntValue == MediumDec::NegativeZero ? 0 : self.IntValue ;
2374+ bool WasNegative = self.IntValue < 0 ;
2375+ if (WasNegative)
2376+ self.IntValue = self.IntValue == MediumDec::NegativeZero ? -1 : --self.IntValue ;
23752377 self.IntValue += value;
23762378 if (self.IntValue == -1 )
23772379 self.IntValue = self.DecimalHalf01 == 0 ? 0 : MediumDec::NegativeZero;
23782380 else if (self.IntValue < 0 )
23792381 ++self.IntValue ;
2382+ // If flips to other side of negative, invert the decimals
2383+ if ((WasNegative && self.IntValue >= 0 ) || (WasNegative == 0 && self.IntValue < 0 ))
2384+ self.DecimalHalf01 = MediumDec::DecimalOverflow - self.DecimalHalf01 ;
23802385 }
2381- // else if(self.IntValue==NegativeZero)
2382- // {
2383- // if(value==1)//-0.5 + 1
2384- // self.IntValue = 0;
2385- // //else if(value<0)-0.5 - 1
2386- // // self.IntValue = value;
2387- // else//-0.5 + 2 = 1.5
2388- // self.IntValue = value - 1;
2389- // }
2390- // else if(self.IntValue<0)
2391- // {
2392- // int ReversedIntHalf = self.IntValue*-1;
2393- // if(value>ReversedIntHalf)//-1.5+ 3
2394- // self.IntValue += value -1;
2395- // else if(value==ReversedIntHalf)
2396- // self.IntValue = NegativeZero; //-1.5 + 1
2397- // else
2398- // self.IntValue += value;
2399- // }
2400- // else
2401- // {
2402- // self.IntValue += value;
2403- // }
24042386 return self;
24052387 }
24062388
@@ -2422,36 +2404,18 @@ namespace BlazesRusCode
24222404 self.IntValue -= value;
24232405 else
24242406 {
2425- if (self.IntValue < 0 )
2426- self.IntValue = --self.IntValue ;
2407+ bool WasNegative = self.IntValue < 0 ;
2408+ if (WasNegative)
2409+ self.IntValue = self.IntValue == MediumDec::NegativeZero ? -1 : --self.IntValue ;
24272410 self.IntValue -= value;
24282411 if (self.IntValue == -1 )
24292412 self.IntValue = self.DecimalHalf01 == 0 ? 0 : MediumDec::NegativeZero;
24302413 else if (self.IntValue < 0 )
24312414 ++self.IntValue ;
2415+ // If flips to other side of negative, invert the decimals
2416+ if ((WasNegative && self.IntValue >= 0 ) || (WasNegative == 0 && self.IntValue < 0 ))
2417+ self.DecimalHalf01 = MediumDec::DecimalOverflow - self.DecimalHalf01 ;
24322418 }
2433- // else if(self.IntValue==NegativeZero)
2434- // {
2435- // if(value==1)
2436- // self.IntValue = 0;
2437- // else//if(value>0)
2438- // self.IntValue = value - 1;
2439- // }
2440- // else if(self.IntValue<0)
2441- // {
2442- // self.IntValue -= value;
2443- // }
2444- // else
2445- // {
2446- // //value to apply to get to negative zero
2447- // int ReversedAtZero = self.IntValue+1;
2448- // if(value>self.IntValue)//1.5-3 =-1.5
2449- // self.IntValue -= value - 1;
2450- // else if(value==ReversedAtZero)//1.5 - 2 = -0.5
2451- // self.IntValue = NegativeZero;
2452- // else
2453- // self.IntValue -= value;
2454- // }
24552419 return self;
24562420 }
24572421
0 commit comments