diff --git a/cmdline/CtaAdminCmd.cpp b/cmdline/CtaAdminCmd.cpp
index 3ebb3b07b0e85cb22094db75f3cfe0757b1ca374..631ceaa7584e15d76591a39968dda3340fbbaf8d 100644
--- a/cmdline/CtaAdminCmd.cpp
+++ b/cmdline/CtaAdminCmd.cpp
@@ -32,8 +32,8 @@
 // global synchronisation flag
 std::atomic<bool> isHeaderSent(false);
 
-// initialise an output buffer of 5 lines
-cta::admin::TextFormatter formattedText(5);
+// initialise an output buffer of 1000 lines
+cta::admin::TextFormatter formattedText(1000);
 
 
 namespace XrdSsiPb {
diff --git a/cmdline/CtaAdminTextFormatter.cpp b/cmdline/CtaAdminTextFormatter.cpp
index 9b2dc8dd7f31ea773d0d1efe80e188b24d6c74dc..60107443c82e6eaa4261d6f4be81aa0fef1c1695 100644
--- a/cmdline/CtaAdminTextFormatter.cpp
+++ b/cmdline/CtaAdminTextFormatter.cpp
@@ -43,16 +43,16 @@ std::string TextFormatter::timeToStr(const time_t &unixtime) {
 
 
 std::string TextFormatter::dataSizeToStr(uint64_t value) {
-  const std::vector<char> suffix = { 'E', 'P', 'T', 'G', 'M', 'K' };
+  const std::vector<char> suffix = { 'K', 'M', 'G', 'T', 'P', 'E' };
 
   // Simple case, values less than 1000 bytes don't take a suffix
   if(value < 1000) return std::to_string(value);
 
-  // Find the correct scaling, starting at 1 EB and working down. I'm assuming we won't have
-  // zettabytes or yottabytes of data in a tapepool anytime soon.
-  uint64_t divisor;
+  // Find the correct scaling, starting at 1 KB and working up. I'm assuming we won't have zettabytes
+  // or yottabytes of data in a tapepool anytime soon.
   int unit;
-  for(unit = 0, divisor = 1'000'000'000'000'000'000; value < divisor; divisor /= 1000, ++unit) ;
+  uint64_t divisor;
+  for(unit = 0, divisor = 1000; unit < 6 && value >= divisor*1000; divisor *= 1000, ++unit) ;
 
   // Convert to format like "3.1G"
   double val_d = static_cast<double>(value) / static_cast<double>(divisor);