The countBeforeFull method that is part of Subscription is supposed to return the number of messages that the subscription can accept before it is full. This works fine for Durables and Queues (Prefetch subscriptions) where the value is a positive value when it can accept more messages. Usually the value will report the size of prefetch minus any prefetch extension and dispatchedQueueSize.
However, for a TopicSubscription this value is reversed and it is subtracting prefetch from dispatchedQueueSize. For example, if the prefetch policy is set at 1000, this method will report "-1000" when calling countBeforeFull.