diff --git a/.cleancount b/.cleancount
index a45fd52cc5891570d6299fab38643103c3955474..7273c0fa8c522b7eed7762a353d46f7768e9b6f2 100644
--- a/.cleancount
+++ b/.cleancount
@@ -1 +1 @@
-24
+25
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index e3c7f3b68c66b5e21578301e3a65794690cd32f6..34ac4467859064e9761b36e444653e1fd182315a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1305,7 +1305,7 @@ static int _sip_show_peers(int fd, int *total, struct mansession *s, struct mess
 static int manager_sip_show_peers( struct mansession *s, struct message *m );
 static int sip_show_peers(int fd, int argc, char *argv[]);
 static int sip_show_objects(int fd, int argc, char *argv[]);
-static void  print_group(int fd, unsigned int group, int crlf);
+static void  print_group(int fd, ast_group_t group, int crlf);
 static const char *dtmfmode2str(int mode) attribute_const;
 static const char *insecure2str(int port, int invite) attribute_const;
 static void cleanup_stale_contexts(char *new, char *old);
@@ -9371,7 +9371,7 @@ static int sip_show_objects(int fd, int argc, char *argv[])
 	return RESULT_SUCCESS;
 }
 /*! \brief Print call group and pickup group */
-static void  print_group(int fd, unsigned int group, int crlf)
+static void  print_group(int fd, ast_group_t group, int crlf)
 {
 	char buf[256];
 	ast_cli(fd, crlf ? "%s\r\n" : "%s\n", ast_print_group(buf, sizeof(buf), group) );
diff --git a/include/asterisk/channel.h b/include/asterisk/channel.h
index 4f636d1853e7e9d2bca58f58a4f62195651d16bc..bf67fc9d21c219dbda40783ffc1fc50f36ebf30c 100644
--- a/include/asterisk/channel.h
+++ b/include/asterisk/channel.h
@@ -407,8 +407,8 @@ struct ast_channel {
 	unsigned int fout;
 	int hangupcause;				/*!< Why is the channel hanged up. See causes.h */
 	struct varshead varshead;			/*!< A linked list for channel variables */
-	unsigned int callgroup;				/*!< Call group for call pickups */
-	unsigned int pickupgroup;			/*!< Pickup group - which calls groups can be picked up? */
+	ast_group_t callgroup;				/*!< Call group for call pickups */
+	ast_group_t pickupgroup;			/*!< Pickup group - which calls groups can be picked up? */
 	unsigned int flags;				/*!< channel flags of AST_FLAG_ type */
 	unsigned short transfercapability;		/*!< ISDN Transfer Capbility - AST_FLAG_DIGITAL is not enough */
 	AST_LIST_HEAD_NOLOCK(, ast_frame) readq;
diff --git a/main/cli.c b/main/cli.c
index 698f249f4e29947d7ec7c1f3af9163aade960cf4..d45e3ff4e0f12a81e2870ad56bfb0a7bc6e9f26d 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -724,8 +724,8 @@ static int handle_showchan(int fd, int argc, char *argv[])
 		"        Context: %s\n"
 		"      Extension: %s\n"
 		"       Priority: %d\n"
-		"     Call Group: %d\n"
-		"   Pickup Group: %d\n"
+		"     Call Group: %lld\n"
+		"   Pickup Group: %lld\n"
 		"    Application: %s\n"
 		"           Data: %s\n"
 		"    Blocking in: %s\n",