diff --git a/src/server/dispense.c b/src/server/dispense.c
index b0a59364e5c8ae63479e151adfbf66d3b8148157..b05c81c714415e6f9921348fe547892667a6088c 100644
--- a/src/server/dispense.c
+++ b/src/server/dispense.c
@@ -68,10 +68,21 @@ int DispenseItem(int ActualUser, int User, tItem *Item)
 	actualUsername = Bank_GetAcctName(ActualUser);
 	
 	// And log that it happened
-	Log_Info("dispense '%s' (%s:%i) for %s by %s [cost %i, balance %i]",
-		Item->Name, handler->Name, Item->ID,
-		username, actualUsername, Item->Price, Bank_GetBalance(User)
-		);
+	if( gbNoCostMode )
+	{
+		// Special format for zero cost dispenses
+		Log_Info("test dispense '%s' (%s:%i) for %s by %s [no change]",
+			Item->Name, handler->Name, Item->ID,
+			username, actualUsername
+			);
+	}
+	else
+	{
+		Log_Info("dispense '%s' (%s:%i) for %s by %s [cost %i, balance %i]",
+			Item->Name, handler->Name, Item->ID,
+			username, actualUsername, Item->Price, Bank_GetBalance(User)
+			);
+	}
 	
 	free( username );
 	free( actualUsername );