old_contents: #
  # Copyright 2012 Quantopian, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  
  class PerShare(object):
      """
      Calculates a commission for a transaction based on a per
      share cost.
      """
  
      def __init__(self, cost=0.03):
          """
          Cost parameter is the cost of a trade per-share. $0.03
          means three cents per share, which is a very conservative
          (quite high) for per share costs.
          """
          self.cost = cost
  
      def calculate(self, transaction):
          """
          returns a tuple of:
          (per share commission, total transaction commission)
          """
          return self.cost, abs(transaction.amount * self.cost)
  
  
  class PerTrade(object):
      """
      Calculates a commission for a transaction based on a per
      trade cost.
      """
  
      def __init__(self, cost=5.0):
          """
          Cost parameter is the cost of a trade, regardless of
          share count. $5.00 per trade is fairly typical of
          discount brokers.
          """
          self.cost = cost
  
      def calculate(self, transaction):
          """
          returns a tuple of:
          (per share commission, total transaction commission)
          """
          if transaction.amount == 0:
              return 0.0, 0.0
  
          return abs(self.cost / transaction.amount), self.cost
  
new_contents: #
  # Copyright 2012 Quantopian, Inc.
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  
  class PerShare(object):
      """
      Calculates a commission for a transaction based on a per
      share cost.
      """
  
      def __init__(self, cost=0.03):
          """
          Cost parameter is the cost of a trade per-share. $0.03
          means three cents per share, which is a very conservative
          (quite high) for per share costs.
          """
          self.cost = cost
  
      def calculate(self, transaction):
          """
          returns a tuple of:
          (per share commission, total transaction commission)
          """
          return self.cost, abs(transaction.amount * self.cost)
  
  
  class PerTrade(object):
      """
      Calculates a commission for a transaction based on a per
      trade cost.
      """
  
      def __init__(self, cost=5.0):
          """
          Cost parameter is the cost of a trade, regardless of
          share count. $5.00 per trade is fairly typical of
          discount brokers.
          """
          # Cost needs to be floating point so that calculation using division
          # logic does not floor to an integer.
          self.cost = float(cost)
  
      def calculate(self, transaction):
          """
          returns a tuple of:
          (per share commission, total transaction commission)
          """
          if transaction.amount == 0:
              return 0.0, 0.0
  
          return abs(self.cost / transaction.amount), self.cost
  
subject: Fix floored results in trade commission calculations.