diff --git a/src/sbbs3/gtkuseredit/events.c b/src/sbbs3/gtkuseredit/events.c
index db5c6fa8ce9ae04e0bf5a6a77e4aec2b622076d2..2e33d5ae95f3847f7ad0ec016c45fac8eb7d4128 100644
--- a/src/sbbs3/gtkuseredit/events.c
+++ b/src/sbbs3/gtkuseredit/events.c
@@ -2050,7 +2050,7 @@ int get_date(GtkWidget *t, isoDate_t *date)
 	gtk_calendar_get_date(GTK_CALENDAR(w), &year, &month, &day);
 	gtk_widget_hide(GTK_WIDGET(gtk_widget_get_toplevel(GTK_WIDGET(w))));
 	*date=isoDate_create(year, month+1, day);
-	return(odate!=*date);
+	return odate == *date;
 }
 
 G_MODULE_EXPORT void get_expiration(GtkWidget *t, gpointer data)
@@ -2094,18 +2094,19 @@ G_MODULE_EXPORT void get_birthdate(GtkWidget *t, gpointer data)
 	GtkWidget	*w;
 	int			year;
 
-	year=atoi(user.birth+6)+1900;
-	if(year<Y2K_2DIGIT_WINDOW)
-		year+=100;
-	if(cfg.sys_misc&SM_EURODATE)
-		date=isoDate_create(year, atoi(user.birth+3), atoi(user.birth));
-	else
-		date=isoDate_create(year, atoi(user.birth), atoi(user.birth+3));
-	if(!get_date(t, &date)) {
+
+	if(user.birth[2] == '/') {
+		year=atoi(user.birth+6)+1900;
+		if(year<Y2K_2DIGIT_WINDOW)
+			year+=100;
 		if(cfg.sys_misc&SM_EURODATE)
-			sprintf(user.birth,"%02u/%02u/%02u",isoDate_day(date),isoDate_month(date),isoDate_year(date)%100);
+			date=isoDate_create(year, atoi(user.birth+3), atoi(user.birth));
 		else
-			sprintf(user.birth,"%02u/%02u/%02u",isoDate_month(date),isoDate_day(date),isoDate_year(date)%100);
+			date=isoDate_create(year, atoi(user.birth), atoi(user.birth+3));
+	} else
+		date = atoi(user.birth);
+	if(!get_date(t, &date)) {
+		SAFEPRINTF3(user.birth,"%04u%02u%02u",isoDate_year(date),isoDate_month(date),isoDate_day(date));
 		user_changed(t, data);
 		w=GTK_WIDGET(gtk_builder_get_object(builder, "eBirthdate"));
 		if(w==NULL)