diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c
index f158473301ba5be9dcdb4c68776abd513d756e06..4fa57207e379b7c5b1534fab1e30e3f547ec1108 100644
--- a/src/sbbs3/sbbs_ini.c
+++ b/src/sbbs3/sbbs_ini.c
@@ -461,9 +461,9 @@ void sbbs_read_ini(
 		bbs->login_attempt = get_login_attempt_settings(list, section, global);
 		bbs->max_concurrent_connections = iniGetInteger(list, section, strMaxConConn, 0);
 
-		bbs->max_login_inactivity = iniGetShortInt(list, section, strMaxLoginInactivity, 10 * 60);
-		bbs->max_newuser_inactivity = iniGetShortInt(list, section, strMaxNewUserInactivity, 60 * 60);
-		bbs->max_session_inactivity = iniGetShortInt(list, section, strMaxSessionInactivity, 0);
+		bbs->max_login_inactivity = (uint16_t)iniGetDuration(list, section, strMaxLoginInactivity, 10 * 60);
+		bbs->max_newuser_inactivity = (uint16_t)iniGetDuration(list, section, strMaxNewUserInactivity, 60 * 60);
+		bbs->max_session_inactivity = (uint16_t)iniGetDuration(list, section, strMaxSessionInactivity, 0);
 
 		SAFECOPY(bbs->web_file_vpath_prefix, iniGetString(list, "web", strFileVPathPrefix, nulstr, value));
 	}
@@ -488,11 +488,11 @@ void sbbs_read_ini(
 		ftp->max_clients
 			=iniGetShortInt(list,section,strMaxClients,FTP_DEFAULT_MAX_CLIENTS);
 		ftp->max_inactivity
-			=iniGetShortInt(list,section,strMaxInactivity,FTP_DEFAULT_MAX_INACTIVITY);	/* seconds */
+			=(uint16_t)iniGetDuration(list,section,strMaxInactivity,FTP_DEFAULT_MAX_INACTIVITY);	/* seconds */
 		ftp->qwk_timeout
-			=iniGetShortInt(list,section,"QwkTimeout",FTP_DEFAULT_QWK_TIMEOUT);		/* seconds */
+			=(uint16_t)iniGetDuration(list,section,"QwkTimeout",FTP_DEFAULT_QWK_TIMEOUT);		/* seconds */
 		ftp->sem_chk_freq
-			=iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq);
+			=(uint16_t)iniGetDuration(list,section,strSemFileCheckFrequency,global->sem_chk_freq);
 		ftp->min_fsize
 			=iniGetBytes(list,section,"MinFileSize",1,0);
 		ftp->max_fsize
@@ -564,7 +564,7 @@ void sbbs_read_ini(
 		mail->max_clients
 			=iniGetShortInt(list,section,strMaxClients,MAIL_DEFAULT_MAX_CLIENTS);
 		mail->max_inactivity
-			=iniGetShortInt(list,section,strMaxInactivity,MAIL_DEFAULT_MAX_INACTIVITY);		/* seconds */
+			=(uint16_t)iniGetDuration(list,section,strMaxInactivity,MAIL_DEFAULT_MAX_INACTIVITY);		/* seconds */
 		mail->max_delivery_attempts
 			=iniGetShortInt(list,section,"MaxDeliveryAttempts",MAIL_DEFAULT_MAX_DELIVERY_ATTEMPTS);
 		mail->rescan_frequency
@@ -696,7 +696,7 @@ void sbbs_read_ini(
 		web->max_clients
 			=iniGetShortInt(list,section,strMaxClients,WEB_DEFAULT_MAX_CLIENTS);
 		web->max_inactivity
-			=iniGetShortInt(list,section,strMaxInactivity,WEB_DEFAULT_MAX_INACTIVITY);		/* seconds */
+			=(uint16_t)iniGetDuration(list,section,strMaxInactivity,WEB_DEFAULT_MAX_INACTIVITY);		/* seconds */
 		web->sem_chk_freq
 			=iniGetShortInt(list,section,strSemFileCheckFrequency,global->sem_chk_freq);
 
@@ -738,7 +738,7 @@ void sbbs_read_ini(
 			,iniGetString(list,section,"JavaScriptExtension",".ssjs",value));
 
 		web->max_cgi_inactivity
-			=iniGetShortInt(list,section,"MaxCgiInactivity",WEB_DEFAULT_MAX_CGI_INACTIVITY);	/* seconds */
+			=(uint16_t)iniGetDuration(list,section,"MaxCgiInactivity",WEB_DEFAULT_MAX_CGI_INACTIVITY);	/* seconds */
 
 		sbbs_get_sound_settings(list, section, &web->sound, &global->sound);
 
@@ -875,11 +875,11 @@ BOOL sbbs_write_ini(
 			break;
 		if(!iniSetInteger(lp,section,strMaxConConn,bbs->max_concurrent_connections,&style))
 			break;
-		if(!iniSetShortInt(lp, section, strMaxLoginInactivity, bbs->max_login_inactivity, &style))
+		if(!iniSetDuration(lp, section, strMaxLoginInactivity, bbs->max_login_inactivity, &style))
 			break;
-		if(!iniSetShortInt(lp, section, strMaxNewUserInactivity, bbs->max_newuser_inactivity, &style))
+		if(!iniSetDuration(lp, section, strMaxNewUserInactivity, bbs->max_newuser_inactivity, &style))
 			break;
-		if(!iniSetShortInt(lp, section, strMaxSessionInactivity, bbs->max_session_inactivity, &style))
+		if(!iniSetDuration(lp, section, strMaxSessionInactivity, bbs->max_session_inactivity, &style))
 			break;
 
 		if(bbs->sem_chk_freq==global->sem_chk_freq)
@@ -967,7 +967,7 @@ BOOL sbbs_write_ini(
 			break;
 		if(!iniSetShortInt(lp,section,strMaxClients,ftp->max_clients,&style))
 			break;
-		if(!iniSetShortInt(lp,section,strMaxInactivity,ftp->max_inactivity,&style))
+		if(!iniSetDuration(lp,section,strMaxInactivity,ftp->max_inactivity,&style))
 			break;
 		if(!iniSetInteger(lp,section,strMaxConConn,ftp->max_concurrent_connections,&style))
 			break;
@@ -1078,7 +1078,7 @@ BOOL sbbs_write_ini(
 			break;
 		if(!iniSetShortInt(lp,section,strMaxClients,mail->max_clients,&style))
 			break;
-		if(!iniSetShortInt(lp,section,strMaxInactivity,mail->max_inactivity,&style))
+		if(!iniSetDuration(lp,section,strMaxInactivity,mail->max_inactivity,&style))
 			break;
 		if(!iniSetShortInt(lp,section,"MaxDeliveryAttempts",mail->max_delivery_attempts,&style))
 			break;
@@ -1244,7 +1244,9 @@ BOOL sbbs_write_ini(
 			break;
 		if(!iniSetShortInt(lp,section,strMaxClients,web->max_clients,&style))
 			break;
-		if(!iniSetShortInt(lp,section,strMaxInactivity,web->max_inactivity,&style))
+		if(!iniSetDuration(lp,section,strMaxInactivity,web->max_inactivity,&style))
+			break;
+		if(!iniSetDuration(lp,section,"MaxCgiInactivity",web->max_cgi_inactivity,&style))
 			break;
 
 		if(web->sem_chk_freq==global->sem_chk_freq)
@@ -1304,11 +1306,6 @@ BOOL sbbs_write_ini(
 		if(!iniSetString(lp,section,"JavaScriptExtension",web->ssjs_ext,&style))
 			break;
 
-		if(!iniSetShortInt(lp,section,strMaxInactivity,web->max_inactivity,&style))
-			break;
-		if(!iniSetShortInt(lp,section,"MaxCgiInactivity",web->max_cgi_inactivity,&style))
-			break;
-
 		if(!sbbs_set_sound_settings(lp, section, &web->sound, &global->sound, &style))
 			break;
 
diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c
index 075eb143f56db875fe2508a69f2cf9410c5ad90b..e6bb585ca807cc4a3bc7a60c7209f09fc5725848 100644
--- a/src/sbbs3/scfglib1.c
+++ b/src/sbbs3/scfglib1.c
@@ -123,7 +123,7 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
 	cfg->max_log_size = (uint32_t)iniGetBytes(ini, ROOT_SECTION, "max_log_size", 1, 0);
 	cfg->max_logs_kept = iniGetUInt16(ini, ROOT_SECTION, "max_logs_kept", 0);
 	cfg->ctrlkey_passthru = iniGetInteger(ini, ROOT_SECTION, "ctrlkey_passthru", 0);
-	cfg->max_getkey_inactivity = iniGetUInteger(ini, ROOT_SECTION, "max_getkey_inactivity", 300);
+	cfg->max_getkey_inactivity = iniGetDuration(ini, ROOT_SECTION, "max_getkey_inactivity", 300);
 	cfg->inactivity_warn = (uchar)iniGetShortInt(ini, ROOT_SECTION, "inactivity_warn", 75);
 
 	cfg->user_backup_level = iniGetInteger(ini, ROOT_SECTION, "user_backup_level", 5);
diff --git a/src/sbbs3/scfglib2.c b/src/sbbs3/scfglib2.c
index 713165f03a0bd69200a91c1edfb8fcb78f327809..4102329ea424f11d75d7f501c529a6849a64013a 100644
--- a/src/sbbs3/scfglib2.c
+++ b/src/sbbs3/scfglib2.c
@@ -480,7 +480,7 @@ BOOL read_xtrn_cfg(scfg_t* cfg, char* error, size_t maxerrlen)
 		SAFECOPY(cfg->xtrn[i]->path, iniGetString(section, NULL, "startup_dir", "", value));
 		cfg->xtrn[i]->textra = (uint8_t)iniGetShortInt(section, NULL, "textra", 0);
 		cfg->xtrn[i]->maxtime = (uint8_t)iniGetShortInt(section, NULL, "max_time", 0);
-		cfg->xtrn[i]->max_inactivity = iniGetUInteger(section, NULL, "max_inactivity", 0);
+		cfg->xtrn[i]->max_inactivity = (uint)iniGetDuration(section, NULL, "max_inactivity", 0);
 		++cfg->total_xtrns;
 	}
 	iniFreeStringList(list);
diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c
index 36bac945dca16815b3a23eab286a6dba9cceaca9..efc3f7182af9e25df36d83df53ea8a9c461bac56 100644
--- a/src/sbbs3/scfgsave.c
+++ b/src/sbbs3/scfgsave.c
@@ -140,7 +140,7 @@ BOOL write_main_cfg(scfg_t* cfg, int backup_level)
 	iniSetBytes(&ini, ROOT_SECTION, "max_log_size", 1, cfg->max_log_size, NULL);
 	iniSetShortInt(&ini, ROOT_SECTION, "max_logs_kept", cfg->max_logs_kept, NULL);
 	iniSetHexInt(&ini, ROOT_SECTION, "ctrlkey_passthru", cfg->ctrlkey_passthru, NULL);
-	iniSetUInteger(&ini, ROOT_SECTION, "max_getkey_inactivity", cfg->max_getkey_inactivity, NULL);
+	iniSetDuration(&ini, ROOT_SECTION, "max_getkey_inactivity", cfg->max_getkey_inactivity, NULL);
 	iniSetShortInt(&ini, ROOT_SECTION, "inactivity_warn", cfg->inactivity_warn, NULL);
 	iniSetShortInt(&ini, ROOT_SECTION, "user_backup_level", cfg->user_backup_level, NULL);
 	iniSetShortInt(&ini, ROOT_SECTION, "mail_backup_level", cfg->mail_backup_level, NULL);
@@ -947,7 +947,7 @@ BOOL write_xtrn_cfg(scfg_t* cfg, int backup_level)
 			iniSetString(&section, name, "startup_dir", cfg->xtrn[i]->path, NULL);
 			iniSetShortInt(&section, name, "textra", cfg->xtrn[i]->textra, NULL);
 			iniSetShortInt(&section, name, "max_time", cfg->xtrn[i]->maxtime, NULL);
-			iniSetUInteger(&section, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL);
+			iniSetDuration(&section, name, "max_inactivity", cfg->xtrn[i]->max_inactivity, NULL);
 			strListMerge(&ini, section);
 			free(section);
 		}