diff --git a/pgadmin/dlg/dlgRole.cpp b/pgadmin/dlg/dlgRole.cpp
index 059e979..bb67653 100644
--- a/pgadmin/dlg/dlgRole.cpp
+++ b/pgadmin/dlg/dlgRole.cpp
@@ -215,6 +215,11 @@ int dlgRole::Go(bool modal)
 			datValidUntil->SetValue(role->GetAccountExpires().GetDateOnly());
 			timValidUntil->SetTime(role->GetAccountExpires());
 		}
+		else
+		{
+			wxDateTime empty;
+			datValidUntil->SetValue(empty);
+		}
 		txtConnectionLimit->SetValue(NumToStr(role->GetConnectionLimit()));
 		txtComment->SetValue(role->GetComment());
 
@@ -654,7 +659,7 @@ wxString dlgRole::GetSql()
 		{
 			if (datValidUntil->GetValue().IsValid())
 				options += wxT("\n   VALID UNTIL ") + qtDbString(DateToAnsiStr(datValidUntil->GetValue() + timValidUntil->GetValue()));
-			else
+			else if (!role->GetIsValidInfinity() && role->GetAccountExpires().GetValue() != -1)	
 				options += wxT("\n   VALID UNTIL 'infinity'");
 		}
 
diff --git a/pgadmin/include/schema/pgRole.h b/pgadmin/include/schema/pgRole.h
index b80be79..4c9518d 100644
--- a/pgadmin/include/schema/pgRole.h
+++ b/pgadmin/include/schema/pgRole.h
@@ -147,6 +147,10 @@ public:
 	{
 		connectionLimit = newVal;
 	}
+	void iSetIsValidInfinity(const bool b)
+	{
+		isValidInfinity = b;
+	}
 	wxArrayString &GetRolesIn()
 	{
 		return rolesIn;
@@ -179,11 +183,15 @@ public:
 	{
 		return true;
 	}
+	bool GetIsValidInfinity()
+	{
+		return isValidInfinity;
+	}
 private:
 	wxString password;
 	wxString rolqueuename;
 	wxDateTime accountExpires;
-	bool superuser, createDatabase, createRole, updateCatalog, inherits, canLogin, replication;
+	bool superuser, createDatabase, createRole, updateCatalog, inherits, canLogin, replication, isValidInfinity;
 	long connectionLimit;
 	wxArrayString rolesIn;
 	wxArrayString variables;
diff --git a/pgadmin/schema/pgRole.cpp b/pgadmin/schema/pgRole.cpp
index 188a986..9c02fc9 100644
--- a/pgadmin/schema/pgRole.cpp
+++ b/pgadmin/schema/pgRole.cpp
@@ -643,6 +643,7 @@ pgObject *pgRoleBaseFactory::CreateObjects(pgCollection *collection, ctlTree *br
 			role->iSetSuperuser(roles->GetBool(wxT("rolsuper")));
 			role->iSetUpdateCatalog(roles->GetBool(wxT("rolcatupdate")));
 			role->iSetAccountExpires(roles->GetDateTime(wxT("rolvaliduntil")));
+			role->iSetIsValidInfinity(roles->GetVal(wxT("rolvaliduntil"))==wxT("infinity") ? true : false);
 			role->iSetPassword(roles->GetVal(wxT("rolpassword")));
 			role->iSetComment(roles->GetVal(wxT("description")));
 			role->iSetConnectionLimit(roles->GetLong(wxT("rolconnlimit")));
