     unless last_billing_at and next_billing_at > new Date()
       return callback()
 
-    billing_unit_count = Math.floor (Date.now() - last_billing_at.getTime()) / plan_info.billing_by_time.unit
+    billing_unit_count = (Date.now() - last_billing_at.getTime()) / plan_info.billing_by_time.unit
 
-    new_last_billing_at = new Date last_billing_at.getTime() + billing_unit_count * plan_info.billing_by_time.unit
+    if is_force
+      billing_unit_count = Math.ceil billing_unit_count
+      new_last_billing_at = new Date()
+    else
+      billing_unit_count = Math.floor billing_unit_count
+      new_last_billing_at = new Date last_billing_at.getTime() + billing_unit_count * plan_info.billing_by_time.unit
+
     amount = billing_unit_count * plan_info.billing_by_time.price
 
     callback null,
       name: plan_name
+      billing_unit_count: billing_unit_count
       last_billing_at: new_last_billing_at
       amount_inc: -amount
 


# @param callback(account)
exports.triggerBilling = (account, callback) ->
  modifier =
    $inc:
      'attribute.balance': 0

  async.each account.billing.plans, (plan_name, callback) ->
    plan_info = config.plans[plan_name]

    result = _.compact result

    if _.isEmpty result
      return callback account

    modifier =
      $set: {}
