diff --git a/src/finn/transformation/fpgadataflow/derive_characteristic.py b/src/finn/transformation/fpgadataflow/derive_characteristic.py
index 53540e22d8b72e79b6dc91d1afa2bdf7479635d1..1bd7182ca8333fc0bdc5b588e1dfd66b78060d8d 100644
--- a/src/finn/transformation/fpgadataflow/derive_characteristic.py
+++ b/src/finn/transformation/fpgadataflow/derive_characteristic.py
@@ -282,7 +282,7 @@ class DeriveFIFOSizes(NodeLocalTransformation):
                 model = self.ref_input_model
                 consumers = model.find_consumers(node.output[0])
                 # compute FIFO depth for each consumer
-                out_fifo_depth = 0
+                out_fifo_depths = []
                 for cons_node in consumers:
                     cons = registry.getCustomOp(cons_node)
                     cons_chrc = cons.get_nodeattr("io_characteristic")
@@ -298,11 +298,13 @@ class DeriveFIFOSizes(NodeLocalTransformation):
                     prod_chrc_part = prod_chrc[pshift_min : (pshift_min + period)]
                     cons_chrc_part = cons_chrc[:period]
                     fifo_depth = (prod_chrc_part - cons_chrc_part).max()
-                    out_fifo_depth = max(out_fifo_depth, fifo_depth)
+                    out_fifo_depths.append(fifo_depth)
                 # set output FIFO depth for this (producing) node
                 # InsertFIFO looks at the max of (outFIFODepth, inFIFODepth)
                 # for each tensor
-                prod.set_nodeattr("outFIFODepth", out_fifo_depth)
+                prod.set_nodeattr("outFIFODepth", out_fifo_depths[0])
+                # used only for multi-consumer. nodes
+                prod.set_nodeattr("outFIFODepths", out_fifo_depths)
 
             except KeyError:
                 # exception if op_type is not supported