When you write an integer number as a literal, integers from -2 147 483 648 to +2 147 483 647 are cast to an Int in B4A/B4J (did not test B4i). Integers literals outside the Int range are cast to a Long, which has a range of -9 223 372 036 854 775 808 to +9 223 372 036 854 775 807. Any integer literals outside the Long range will just overflow and remain a Long.
When you write
junk = 30 * 24 * 3600 * 1000
All four integer literals are converted to Int (they are in that range). 30 is multiplied by 24, giving an Int of 720. 720 is multiplied by 3600, resulting in an Int of 2592000. 2592000 is multiplied by 1000, which then produces an overflow (the result is larger than the max Int size), resulting in -1702967296 which then is cast to a Long.
When you write
Private junk As Long = 30 * 24 * 3600
Log(junk) ' get 2592000
junk = junk * 1000
Then 30*24*3600 produces an Int of 2592000, which then is cast to a Long. Then you multiply that Long by an Int, the Long does not overflow (in this case), producing your expected result of 2592000000.
Moral of this story, when mixing Long and Int multiplication, make sure that the first number (be it a variable or be it an integer literal) is a Long or you may experience an unexpected result (due to overflow).
Note: In Java, you can add a L to your integer literal (such as 100L) to designate that number as a Long, but that does not seem to work in B4A (nor B4J), where Int or Long are solely determined by the range the integer literal falls into.