anchor.diff:      io:format("EndTime   : ~s~n", [End]),
       io:format("~-36..=s: ~-32..=s ~-32..=s~n",
                 ["Bucket ", "Objects ", "Bytes "]),
  -    %% TODO: Error handling, e.g. StatItems = "{error,{timeout,[]}}"
       [case StatItems of
            ErrorMessage when is_binary(ErrorMessage) ->
                io:format("~-36s: ~s~n", [Bucket, ErrorMessage]);
            _ ->
                {<<"Objects">>, Objects} = lists:keyfind(<<"Objects">>, 1, StatItems),
                {<<"Bytes">>, Bytes}     = lists:keyfind(<<"Bytes">>, 1, StatItems),
  -             io:format("~-36s: ~32B ~32B~n", [Bucket, Objects, Bytes])
  +             io:format("~-36s: ~32B ~32B~n", [Bucket, Objects, Bytes]),
  +             case length(StatItems) =< 2 of
  +                 true -> ok;
  +                 false ->
  +                     [io:format("  +--- ~-29s= ~32B~n", [K, V]) ||
  +                         {K, V} <- StatItems,
  +                         (PrintZeros orelse V =/= 0)]
  +             end
        end || {Bucket, StatItems} <- Buckets].
   
   print_users(RiakcPid, Bucket, Options) ->
  
positive.code:         {Op, OpStats} <- Ops,
          {StatsKey, StatsValue} <- OpStats].
  
  print_storage_stats(Key, SiblingNo, StatsBin) ->
      {Start, End, _Node, Buckets} = stats_sample_from_binary(StatsBin),
      io:nl(),
      io:format("Key       : ~s~n", [Key]),
  
negative.code:                   {show, [{key, undefined, undefined, string, "access stats key"}]}]}).
  -define(storage_cmd_spec,
          {storage, [{list, ?sort_opt_spec},
                     {show, [{key, undefined, undefined, string, "storage stats key"},
                             {print_zeros, undefined, "print-zeros", {boolean, false},
                              "print zeros for detaild stat items"}]}]}).
  -define(user_cmd_spec,
          {user, [{list, ?sort_opt_spec},
                  {show, [{key, undefined, "key", string, "User ID"},
  