It's rather a late reply, but as a search for this still led me here 10 months later, I thought I'd give a code example of Per Jackson's response above in SPD 2013 (I haven't got an earlier version to test with I'm afraid). In my example of an IT HelpDesk, the DueDate value gets set based on the priority of the ticket raised, then changes the DueDate value if it falls on a Saturday or Sunday (to Monday or Tuesday respectively):
Step: 3 - Set "Due Date" based on Priority
Step: 3.1 Set initial value for DueDate
If Current Item:Priority equals (1) High
Add 0 months, 0 days, 11 hours, 0 minutes to Today (Output to Variable: DueDate )
If Current Item:Priority equals (2) Normal
Add 0 months, 2 days, 11 hours, 0 minutes to Today (Output to Variable: DueDate )
If Current Item:Priority equals (3) Low
Add 0 months, 5 days, 11 hours, 0 minutes to Today (Output to Variable: DueDate )
Step: 3.2 Fix DueDate for weekend values
Set time as 0 : 0 for Variable: DueDate (Output to Variable: DueDate )
Find days between 01/07/2013 00:00:00 and Variable: DueDate (Output to Variable: DaysBetweenMondayAndDueDate )
Calculate Variable: DaysBetweenMondayAndDueDate mod 7 (Output to Variable: Mod7DueDate )
If Variable: Mod7DueDate is greater than or equal to 5
Add 0 months, 2 days, 0 hours, 0 minutes to Variable: DueDate (Output to Variable: DueDate )
Set time as 17 : 0 for Variable: DueDate (Output to Variable: DueDate )
Update item in Current Item
Log Due date set to [%Current Item:Due Da... to the workflow history list
Step 3.1 decides that 'If a call is logged in the afternoon, it doesn't need to be resolved until tomorrow', then sets a Date/Time variable called DueDate.
Step 3.2 sets the Time part of DueDate to 00:00 to avoid decimals in later calculations.
It then uses the "Find days between" function to find the number of days between a Monday (01/07/13 in this case, but it could be any Monday - and it's in DD/MM/YY format here due to my localisation settings). This value is then stored in a Number variable called DaysBetweenMondayAndDueDate.
It then uses the "Calculate" function to do (DaysBetweenMondayAndDueDate Mod 7), which gives us a nice round number between 0-6 where 0 represents a Monday (as that's what 01/07/13, used earlier, is and 6 represents a Sunday. This is stored as another Number variable called Mod7DueDate.
Finally, if Mod7DueDate is greater or equal to 5 (i.e. if it falls on a Saturday or Sunday), add two days to the original DueDate variable to move it to Monday or Tuesday respectively.
The last functions set the Time part of DueDate to 17.00 (which happens to be my preference in this case), then updates the List item with DueDate variable.
Hope this helps someone :)