Details

    • Type: Sub-task
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: ODF 1.2
    • Component/s: OpenFormula
    • Labels:
      None
    • Proposal:
      Hide

      Change Syntax "Integer period" to "Number period".

      Add Constraints:
      cost >= 0, salvage >= 0, salvage <= cost, 1 <= period <= lifeTime, declinationFactor > 0

      The formula using integer periods according to http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Calc:_DDB_function would be

      To calculate depreciation, DDB uses a fixed rate. When declinationFactor = 2 this is the double-declining-balance method (because it is double the straight-line rate that would depreciate the asset to zero). The rate is given by:

      rate = declinationFactor / lifeTime

      The depreciation each year is calculated as

      depreciation_of_year = MINIMUM( book_value_at_start_of_year * rate; book_value_at_start_of_year - salvagevalue )

      Thus the asset depreciates at rate until the book value is salvagevalue.

      book_value_at_start_of_year_i = originalcost - sigma_i(1,year_i-1,depreciation_of_year_i)

      The current formula is missing the MINIMUM evaluation and uses only (book_value_at_start_of_year * rate), hence the TODO in the draft.

      Alternative algorithm allowing for non-integer periods:

      rate = declinationFactor / lifeTime
      if rate >= 1 then
      rate = 1
      if period == 1 then
      oldValue = cost
      else
      oldValue = 0
      endif
      else
      oldValue = cost * pow( 1 - rate, period - 1 )
      endif
      newValue = cost * pow( 1 - rate, period )
      if newValue < salvage then
      DDB = oldValue - salvage
      else
      DDB = oldValue - newValue
      endif
      if DDB < 0 then
      DDB = 0
      endif

      Show
      Change Syntax "Integer period" to "Number period". Add Constraints: cost >= 0, salvage >= 0, salvage <= cost, 1 <= period <= lifeTime, declinationFactor > 0 The formula using integer periods according to http://wiki.services.openoffice.org/wiki/Documentation/How_Tos/Calc:_DDB_function would be To calculate depreciation, DDB uses a fixed rate. When declinationFactor = 2 this is the double-declining-balance method (because it is double the straight-line rate that would depreciate the asset to zero). The rate is given by: rate = declinationFactor / lifeTime The depreciation each year is calculated as depreciation_of_year = MINIMUM( book_value_at_start_of_year * rate; book_value_at_start_of_year - salvagevalue ) Thus the asset depreciates at rate until the book value is salvagevalue. book_value_at_start_of_year_i = originalcost - sigma_i(1,year_i-1,depreciation_of_year_i) The current formula is missing the MINIMUM evaluation and uses only (book_value_at_start_of_year * rate), hence the TODO in the draft. Alternative algorithm allowing for non-integer periods: rate = declinationFactor / lifeTime if rate >= 1 then rate = 1 if period == 1 then oldValue = cost else oldValue = 0 endif else oldValue = cost * pow( 1 - rate, period - 1 ) endif newValue = cost * pow( 1 - rate, period ) if newValue < salvage then DDB = oldValue - salvage else DDB = oldValue - newValue endif if DDB < 0 then DDB = 0 endif

      Description

      Broken out from OFFICE-916

      DDB lacks a mathematical formula.

      [ed.]
      It does not lack a formula (anymore?), but the current formula is incomplete.
      Constraints are not given.
      TODO: A different algorithm may be used that allows for non-integer periods. OOoCalc uses it, compare with Excel, Gnumeric and KSpread.

        Attachments

          Activity

            People

            • Assignee:
              erack Eike Rathke (Inactive)
              Reporter:
              erack Eike Rathke (Inactive)
            • Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: